Quantcast
Channel: Scripting - McNeel Forum
Viewing all articles
Browse latest Browse all 4125

EtoUI, slider controls

$
0
0

I am using python to learn the Eto module
How can slider controls in EtoUI in python be tracked in real time by tag controls
I gave self.m_slider.Value to self.x_label.Text in the code, but I found that self.x_label.Text does not track the value of self.m_slider.Value.

import Rhino
import scriptcontext
import System
import Rhino.UI
import Eto.Drawing as drawing
import Eto.Forms as forms
#定义初始化变量
drawing_Width = 300
drawing_Height = 200
drawing_Padding = 20
drawing_Spacing_Size_0 = 5
drawing_Spacing_Size_1 = 5
m_slider_Boolean_value = False # m_slider控件是否切换为横竖向
class SampleEtoRoomNumberDialog(forms.Dialog[bool]):
    """"学习Eto框架"""
    def __init__(self):
        super().__init__()
        self.ClientSize = drawing.Size(drawing_Width, drawing_Height)
        self.Title = '新的窗口'
        self.Padding = drawing.Padding(drawing_Padding)
        self.Resizable = True
 
        #定义了一个Label框,用来接收字符
        self.m_label = forms.Label()
        self.m_label.Text = '输入一个字符:'
        self.m_textbox = forms.TextBox()
        self.m_textbox.Text = ""

        #定义了一个按钮,用来结束事件和启动函数
        self.DefaultButton = forms.Button()
        self.DefaultButton.Text ='OK'
        self.DefaultButton.Click += self.OnOKButtonClick
 

        #定义一个按钮来结束事件
        self.AbortButton = forms.Button()
        self.AbortButton.Text ='Cancel'
        self.AbortButton.Click += self.OnCloseButtonClick
        
        #定义一个slider滑块
        self.m_slider = forms.Slider()
        self.m_slider.Width = 12
        self.m_slider.SnapToTick = True
        if m_slider_Boolean_value:
            self.m_slider.Orientation = forms.Orientation.Vertical
        self.m_slider.MaxValue = 10
        self.m_slider.MinValue = 0
        self.m_slider.Value = 1

        #显示滑块的数值
        self.x_label = forms.Label()  
        int_slider_Value = self.m_slider.Value
        str1 = str(int_slider_Value)
        self.x_label.Text = str1
        
        #定义一个下拉选框
        self.m_dropdownlist = forms.DropDown()
        self.m_dropdownlist.SelectedIndex = 0 #定义默认的选区编号
        self.m_dropdownlist.DataStore = ['0', '1', '2']


        #创建一个表布局并添加所有控件
        layout = forms.DynamicLayout()
        #定义空白间距
        layout.Spacing = drawing.Size(drawing_Spacing_Size_0, drawing_Spacing_Size_1)
        #这里是让两个控件并排的语法写法
        layout.AddRow(self.m_label , None , self.m_textbox) #这里中间插入None是用来隔行
        layout.AddRow(None) # spacer
        layout.AddRow(self.m_slider , self.x_label)
        layout.AddRow(self.m_dropdownlist)
        layout.AddRow(self.DefaultButton, self.AbortButton)
        # 设置对话框类型
        self.Content = layout
 
    #下面是类函数的开始,执行事件
    #这里是获取self.m_textbox文本框的字符串
    def GetText(self):
        return self.m_textbox.Text
 
    #检查self.m_textbox.Text是否有值,然后使用self.Close(False)方法结束整个事件
    def OnCloseButtonClick(self, sender, e):
        self.m_textbox.Text = ""
        self.Close(False)
 
    #这是self.DefaultButton按钮的绑定函数,检查self.m_textbox.Text是否有值,然后结束事件.
    def OnOKButtonClick(self, sender, e):
        if self.m_textbox.Text == "":
            self.Close(False)
        else:
            self.Close(True)
#实例化对话框类,并调用其中的函数
def RequestRoomNumber():
    dialog = SampleEtoRoomNumberDialog();
    rc = dialog.ShowModal(Rhino.UI.RhinoEtoApp.MainWindow)
    if (rc):
        print(dialog.GetText()) #Print the Room Number from the dialog control
#放置被其他文件调用当前文件的类和函数
if __name__ == "__main__":
    RequestRoomNumber()

1 post - 1 participant

Read full topic


Viewing all articles
Browse latest Browse all 4125

Trending Articles