使用 GUI 界面控制应用程序的流程

Posted

技术标签:

【中文标题】使用 GUI 界面控制应用程序的流程【英文标题】:Controlling flow of application using GUI interface 【发布时间】:2020-02-05 05:00:57 【问题描述】:

(如果您决定回答,请提前感谢。对不起,如果我无法清楚地描述应用程序的内容。)

我目前正在为我的 gui 界面使用 Tkinter Python 制作桌面应用程序。我遇到了与应用程序流程相关的问题。

我的申请

我的应用程序的主页设计有一些文本框和复选框。检查按钮作为真或假条件工作,其中每个检查按钮指的是是否必须执行特定功能。 为了存储检查按钮的值,字典使用 keys 作为 LabelName 和值作为 True/False 值来维护。

复选框代码

f1=tk.BoolVar()               #People tend to use IntVar() but i prefer BoolVar()
ttk.Label(text="func1")
ttk.Checkbutton(parent, variable=f1)
f2=tk.BoolVar()               
ttk.Label(text="func2")
ttk.Checkbutton(parent, variable=f2)
-------other such CheckButtons------------------

在表单中有一个提交按钮,所有数据连同这些复选按钮一起输入到文本框中。根据真假值,调用由 if-else 条件处理的函数。

#submit button
ttk.Button(parent,text="Submit",command=onsubmit)
###########
def onsubmit():
    ----------statements to read data--------------
    dict['func1']=f1
    dict['func2']=f2
    #other statements
    -----------------------------------------------
    if dict['func1']:
        func1()
    if dict['func2']:
        func2()
    ---other if-else conditions---

每个函数都是单独的模块,由表单或带有数据的框架或 matplotlib 图形组成,用于数据可视化并对放置在根窗口框架上的数据和图形进行其他操作。

我的问题

我希望用户通过在每个函数执行后给他们下一个按钮来控制流程,然后根据他输入的检查按钮进入下一个函数的执行。程序应该等到用户按下下一个按钮,在他们按下下一个按钮后,它应该执行下一个功能,然后再次等待下一个按钮。

解决方案之一: 使用 fig.waitforbuttonpress() 是解决方案。但是我觉得不靠谱。因为即使是鼠标点击也可以跳过函数执行。但我需要专门指定一个按钮,用户可以通过该按钮选择何时继续执行下一个功能。

【问题讨论】:

阅读Switch between frames: create=>hide=>tkraise()和Switch between frames:create=>use=>destroy() 【参考方案1】:

我不确定我是否理解你的代码的作用,但你可以像我猜的那样做:

next_button = ttk.Button(parent,text="Next",command=func1)

...

def func1():
    #do your stuff here        
    next_button.configure(command=func2)

然后您必须将最后一行代码添加到所有函数中以始终重新分配按钮。

另一种可能是:

process = 0

next_button = ttk.Button(parent,text="Next",command=next)

def next():
    global process
    process += 1
    if process == 1:
        func1()
    elif process == 2:
        func2()

    ...

    elif *last_function_reached*:
        process = 0

【讨论】:

以上是关于使用 GUI 界面控制应用程序的流程的主要内容,如果未能解决你的问题,请参考以下文章

python实现GUI自动化(控制鼠标)|屏幕快照&图像识别基础

pyinstaller打包PySide2写的GUI程序,调用ffmpeg隐藏CMD控制台解决方案

过程控制基于matlab GUI串级控制含Matlab源码 2385期

MATLAB GUI 进行自动控制系统校正装置设计

java简单计算器开发GUI图形化界面设计与实现(项目源码+课程设计报告)

git-GUI版本管理 在win10下怎么设置成中文界面