wxpython如何在按钮上设置绑定事件,该事件在单击其他按钮后会启用

索拉布·辛格(Saurabh Singh)

其中包含一个组合框4个按钮。一旦我从组合框中选择一个条目,它将在单击一个按钮时启用一个按钮,从而启用其余按钮。单击按钮后启用按钮后,我想发送命令。下面是我的代码:

import wx
import xlrd
import os,sys,time
folderpath = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
print folderpath
site_lib_path = os.path.join(folderpath, "site_lib")

files = os.listdir(site_lib_path)
for file in files:
    sys.path.append(os.path.join(site_lib_path, file))

from printercx import printercx
from resttestservice.resttestservice import UITest

ui类(wx.Frame):

"""
This Class will create a Sample Frame and Create Two Buttons on tha Panel.
"""

def __init__(self,parent,id):
    """
        This Fucntion will create a Frame and a Panel which has Two buttons: "OK" and "Cancel"

    """
    """-----SALQE Connecttion-----------"""
    self.connection = printercx.deviceConnection()
    self.ui = UITest(self.connection)

    """-----------Window Bar Name------"""
    wx.Frame.__init__(self,parent,id,'GEN-2 Tool',size=(600,500))
    panel=wx.Panel(self)

    """-----------Heading-------"""
    header_text = wx.StaticText(panel, label="GEN-2 Tool", pos=(250,30))
    font = wx.Font(15, wx.DECORATIVE, wx.NORMAL, wx.BOLD)
    header_text.SetFont(font)        
    wx.StaticLine(panel, pos=(10, 75), size=(690,3))

    """-----------Buttons-------"""
    self.pre_button=wx.Button(panel,label="Precondition",pos=(50,250),size=(100,40))
    self.act_button=wx.Button(panel,label="Action",pos=(450,250),size=(100,40))
    self.pass_button=wx.Button(panel,label="Pass",pos=(50,350),size=(100,40))
    self.fail_button=wx.Button(panel,label="Fail",pos=(450,350),size=(100,40))

    """-------------------------------Excel-------------------------------------------------------"""
    self.mainList=[]
    self.val_list=[]
    dic={}
    book=xlrd.open_workbook("Reference_Mapping.xlsx")
    sheet=book.sheet_by_name("TestCases")
    n_row= sheet.nrows-1
    n_col=sheet.ncols
    row=1
    while row<=n_row:
        smallList=[]
        col=0
        while col<n_col:
            cel=sheet.cell(row,0)
            if cel.value!="":
                self.val_list.append(cel.value)
            key=sheet.cell(0,col).value
            val=sheet.cell(row,col).value
            dic[key]=val
            col+=1
        smallList.append(dic.copy())
        self.mainList.append(smallList)
        row+=1
    self.val_list= list(set(self.val_list))
    """-------------------------------------------------------------------------------------------------"""
    """-----------Combo Box with Text-------"""
    text=wx.StaticText(panel, label="Test Case: ", pos=(150,130))
    font = wx.Font(10,wx.DECORATIVE, wx.NORMAL, wx.BOLD)
    text.SetFont(font)
    self.val_list.insert(0, "Select")
    self.combobox=wx.ComboBox(panel, value=self.val_list[0], pos=(300,130), choices=self.val_list,style=wx.CB_READONLY)
    self.Bind(wx.EVT_COMBOBOX, self.onTestCaseSelection, self.combobox)
    print "-----------"
def onTestCaseSelection(self,event):
    if self.combobox.GetSelection()>0:
        print self.combobox.GetValue()
        """---------- Compairing Key's values--------------"""
        for each in range(len(self.mainList)):
            for every in range(len(self.mainList[each])):
                if self.mainList[each][every]['TC_ID']==self.combobox.GetValue():
                    if self.mainList[each][every]['Ref_ID_Pre']=="":
                        if self.mainList[each][every]['Ref_ID_Post']!="":
                            self.pre_button.Enable(False)
                            self.act_button.Enable(True)
                            self.Bind(wx.EVT_BUTTON,self.send_udw,self.act_button)
                            self.pass_button.Enable(True)
                            self.fail_button.Enable(True)

                    if self.mainList[each][every]['Ref_ID_Pre']!="":
                        if self.mainList[each][every]['Ref_ID_Post']=="":
                            self.pre_button.Enable(True)
                            self.Bind(wx.EVT_BUTTON,self.send_udw,self.pre_button)
                            self.act_button.Enable(False)
                            self.pass_button.Enable(False)
                            self.fail_button.Enable(False)

                    if self.mainList[each][every]['Ref_ID_Pre']!="":
                        if self.mainList[each][every]['Ref_ID_Post']!="":
                            action_button_cmd=self.mainList[each][every]['Ref_ID_Post']
                            self.pre_button.Enable(True)
                            self.Bind(wx.EVT_BUTTON,self.send_udw,self.pre_button)
                            self.act_button.Enable(False)
                            self.pass_button.Enable(False)
                            self.fail_button.Enable(False)                                
    else:
        self.disableAllControls(without=None)

def disableAllControls(self, without=None):
    if  without==None:
        self.pre_button.Enable(False)
        self.act_button.Enable(False) 
        self.pass_button.Enable(False)
        self.fail_button.Enable(False)

def send_udw(self,event):

    for each in range(len(self.mainList)):
        for every in range(len(self.mainList[each])):

            if self.mainList[each][every]['TC_ID']==self.combobox.GetValue():
                if self.mainList[each][every]['Ref_ID_Pre']=="":
                    if self.mainList[each][every]['Ref_ID_Post']!="":
                        if self.act_button.IsEnabled()==True:
                            post_command=self.mainList[each][every]['Ref_ID_Post']
                            post_udw="ui_v3.move_to_state "+post_command+" 1"
                            self.connection.udw(post_udw)

                if self.mainList[each][every]['Ref_ID_Pre']!="":
                    if self.mainList[each][every]['Ref_ID_Post']=="":
                        if self.pre_button.IsEnabled()==True:
                            post_command=self.mainList[each][every]['Ref_ID_Pre']
                            post_udw="ui_v3.move_to_state "+post_command+" 1"
                            self.connection.udw(post_udw)

                if self.mainList[each][every]['Ref_ID_Pre']!="":
                    if self.mainList[each][every]['Ref_ID_Post']!="":
                        if self.pre_button.IsEnabled()==True:
                            post_command=self.mainList[each][every]['Ref_ID_Pre']
                            post_udw="ui_v3.move_to_state "+post_command+" 1"
                            print post_udw
                            self.connection.udw(post_udw)
                            """----Enabling button---"""
                            self.pre_button.Enable(False)
                            self.act_button.Enable(True)
                            self.pass_button.Enable(True)
                            self.fail_button.Enable(True)
                            time.sleep(1)

一旦启用此按钮self.act_button.Enable(True),我想发送命令。

迈克·德里斯科尔

您可以将按钮绑定到事件,然后再禁用它们。除非启用它们,否则它们不会对事件做出反应(可能不是鼠标事件)。当您启用按钮时,没有理由绑定事件。

如果您要在启用过程之后调用函数(即self.act_button.Enable(True)),则在此之后立即调用该函数:

self.act_button.Enable(True) 
self.myFunction(*args, **kwargs)

如果要创建某种自定义事件,则需要研究如何使用wx.PostEventwx.lib.newevent以下资源也可能使您感兴趣:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在按钮单击事件上绑定dxSelectBox

来自分类Dev

在按钮单击事件上绑定dxSelectBox

来自分类Dev

如何将事件绑定到功能区按钮上单击wxpython-phoenix

来自分类Dev

如何在按钮单击事件中停止服务

来自分类Dev

如何在按钮单击事件中隐藏占位符?

来自分类Dev

如何使用C#在按钮单击事件上的textBox中设置光标位置?

来自分类Dev

javafx如何在按钮单击事件上扩展整个treeItem?

来自分类Dev

javafx如何在按钮单击事件上扩展整个treeItem?

来自分类Dev

如何在GridView中编写按钮单击事件的代码,该事件从GridView中的行返回一个值

来自分类Dev

如何在 Vue.js 中的按钮单击事件上启用文本字段?

来自分类Dev

如何在 Visual Studio C# 中禁用和启用按钮上的单击事件

来自分类Dev

OpenERP如何在按钮单击事件中使按钮不可见

来自分类Dev

如何在Onsen UI中设置按钮的单击事件?

来自分类Dev

如何在 angular2 中使我在按钮上的 longpress 指令不触发单击或路由器事件?

来自分类Dev

在按钮单击事件上初始化AMCharts

来自分类Dev

使用智能表在按钮的单击事件上搜索数据

来自分类Dev

访问在按钮外部单击事件上创建的标签

来自分类Dev

如何在按钮的单击方法上在Uiimageview上设置按钮图像?

来自分类Dev

如何在“单击”事件上获取按钮ID

来自分类Dev

如何立即将隐藏的div保持在按钮单击事件上,因为它立即消失

来自分类Dev

如何在按钮单击事件中显示typeahead.js下拉数据?

来自分类Dev

如何在按钮单击事件中向数据表添加行?

来自分类Dev

如何在按钮单击事件中更改另一个表单名称

来自分类Dev

如何在按钮单击事件中从另一个类调用方法?

来自分类Dev

如何在按钮单击事件上将值加载到同一JSP页面中

来自分类Dev

如何在按钮单击事件上将项目添加到列表视图?

来自分类Dev

如何将点击事件绑定到元素,在加载异步数据后会显示该事件?

来自分类Dev

单击之前运行的wxpython按钮事件

来自分类Dev

从其他事件调用方法。按钮单击。C#

Related 相关文章

  1. 1

    在按钮单击事件上绑定dxSelectBox

  2. 2

    在按钮单击事件上绑定dxSelectBox

  3. 3

    如何将事件绑定到功能区按钮上单击wxpython-phoenix

  4. 4

    如何在按钮单击事件中停止服务

  5. 5

    如何在按钮单击事件中隐藏占位符?

  6. 6

    如何使用C#在按钮单击事件上的textBox中设置光标位置?

  7. 7

    javafx如何在按钮单击事件上扩展整个treeItem?

  8. 8

    javafx如何在按钮单击事件上扩展整个treeItem?

  9. 9

    如何在GridView中编写按钮单击事件的代码,该事件从GridView中的行返回一个值

  10. 10

    如何在 Vue.js 中的按钮单击事件上启用文本字段?

  11. 11

    如何在 Visual Studio C# 中禁用和启用按钮上的单击事件

  12. 12

    OpenERP如何在按钮单击事件中使按钮不可见

  13. 13

    如何在Onsen UI中设置按钮的单击事件?

  14. 14

    如何在 angular2 中使我在按钮上的 longpress 指令不触发单击或路由器事件?

  15. 15

    在按钮单击事件上初始化AMCharts

  16. 16

    使用智能表在按钮的单击事件上搜索数据

  17. 17

    访问在按钮外部单击事件上创建的标签

  18. 18

    如何在按钮的单击方法上在Uiimageview上设置按钮图像?

  19. 19

    如何在“单击”事件上获取按钮ID

  20. 20

    如何立即将隐藏的div保持在按钮单击事件上,因为它立即消失

  21. 21

    如何在按钮单击事件中显示typeahead.js下拉数据?

  22. 22

    如何在按钮单击事件中向数据表添加行?

  23. 23

    如何在按钮单击事件中更改另一个表单名称

  24. 24

    如何在按钮单击事件中从另一个类调用方法?

  25. 25

    如何在按钮单击事件上将值加载到同一JSP页面中

  26. 26

    如何在按钮单击事件上将项目添加到列表视图?

  27. 27

    如何将点击事件绑定到元素,在加载异步数据后会显示该事件?

  28. 28

    单击之前运行的wxpython按钮事件

  29. 29

    从其他事件调用方法。按钮单击。C#

热门标签

归档