Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Tkinter模块的GUI“按钮”管理脚本执行

使用Tkinter模块的GUI“按钮”管理脚本执行
EN

Stack Overflow用户
提问于 2014-08-21 10:48:54
回答 2查看 1.5K关注 0票数 0

有以下脚本:

代码语言:javascript
运行
AI代码解释
复制
import sys, Tkinter

def myScript():
    ...

    ...


def runScript():
    while 1:
        myScript()

我想用Tkinter模块的GUI“按钮”来管理它

代码语言:javascript
运行
AI代码解释
复制
if __name__ == '__main__':
    win = Frame ()
    win.pack ()
    Label(win, text='Choose following action', font=("Helvetica", 16), width=70, height=20).pack(side=TOP)
    Button(win, text='Start script', width=20, height=3, command=runScript).pack(side=LEFT)
    Button(win, text='Stop script', width=20, height=3, command=sys.exit).pack(side=LEFT)
    Button(win, text='Quit', width=15, height=2, command=win.quit).pack(side=RIGHT)
    mainloop()

当我键入"Start script“按钮时,我的脚本已成功启动并工作(无限循环),但是我想使用”停止脚本“按钮停止执行--我无法这样做,因为带有按钮的主窗口不可用(”没有响应“)

为了正确地使用这两个按钮,我必须更改什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-21 11:30:20

问题是脚本的执行被认为是阻塞的,因此当脚本持续运行时,该控件永远不会返回到GUI,以便能够继续执行任何外部命令来停止它。要调整这一点,您将需要使用线程。这样做的最佳方法是用threading.Thread子类您的脚本方法,并用脚本执行重载.run()方法。这样做的结果如下:

代码语言:javascript
运行
AI代码解释
复制
import threading

class MyScript(threading.Thread):
    def __init__(self):
        super(MyScript, self).__init__()
        self.__stop = threading.Event()

    def stop(self):
        self.__stop.set()

    def stopped(self):
        return self.__stop.isSet()

    def run(self):
        while not self.stopped():
            # Put your script execution here
            print "running"

从这里,您可以设置一个全局变量或类变量,以跟踪当前是否有线程运行(如果您希望用户运行多个脚本实例,您可能希望以不同的方式运行)以及启动和停止它的方法。我推荐一个类变量,您的应用程序本身就是一个类,但这取决于您。

代码语言:javascript
运行
AI代码解释
复制
script_thread = None

def startScript():
    global script_thread
    # If we don't already have a running thread, start a new one
    if not script_thread:
        script_thread = MyScript()
        script_thread.start()

def stopScript():
    global script_thread
    # If we have one running, stop it
    if script_thread:
        script_thread.stop()
        script_thread = None

在那里,您可以将这些方法绑定到按钮上。我不知道您是如何设置应用程序结构的(在我看来,您从Tkinter或Tkinter.Tk()实例的子类导入了所有东西)。但是,为了执行您的建议,您将需要使用线程来防止阻塞情况。

票数 2
EN

Stack Overflow用户

发布于 2014-08-26 03:09:00

用这个:

代码语言:javascript
运行
AI代码解释
复制
import sys
from Tkinter import *
import tkMessageBox as tkmsg

win = None

def myScript():
    pass

def runScript():
    global win
    while 1:
        win.update()
        pass

def btnStop_Click():
    tkmsg.showinfo("Stopped", "Stopped")
    sys.exit

if __name__ == '__main__':
    global win
    win = Frame ()
    win.pack ()
    Label(win, text='Choose following action', font=("Helvetica", 16), width=70, height=20).pack(side=TOP)
    Button(win, text='Start script', width=20, height=3, command=runScript).pack(side=LEFT)
    Button(win, text='Stop script', width=20, height=3, command=btnStop_Click).pack(side=LEFT)
    Button(win, text='Quit', width=15, height=2, command=win.quit).pack(side=RIGHT)
    mainloop()
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25433819

复制
相关文章
Python-GUI|Tkinter模块
01 Tkinter Tkinter模块是Python的标准Tk GUI工具包的接口,它并不是必须掌握的,但是掌握一个Python的标准图形库还是非常有意思的一件事。 它可以跨平台运行在Windows,Linux和Mac等系统上。 这篇文章不会介绍如何灵活地运用Tkinter,而是阐述Tkinter这个库包括什么,它能干什么! 02 第一个Tk-GUI from tkinter import * root=Tk() root.title('first tk gui') root.geometry('
double
2018/04/02
4.7K0
Python-GUI|Tkinter模块
Python Tkinter GUI
Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口。Tkinter不是唯一的python图形编程接口,但是是其中比较流行的一个。最大的特点是跨平台,缺点是性能不太好,执行速度慢。
py3study
2020/01/13
1.9K0
基于tkinter的GUI编程
tkinter:tkinter是绑定了Python的TKGUI工具集,就是Python包装的Tcl代码,通过内嵌在Python解释器内部的Tcl 解释器实现的,它是Python标准库的一部分,所以使用它进行GUI编程不需要另外安装第三方库的。
py3study
2020/01/16
5.6K0
基于tkinter的GUI编程
Python GUI编程:Tkinter
Python里的图形化界面(GUI)模块主要有Tkinter(python自带)、PyQt、wxPython,我们这节主要讲解Tkinter组件:
小雨coding
2020/08/03
7.4K0
Python GUI(Tkinter)初
Python version: 3.7.0 效果: 代码: import tkinter as tk def openPath():     print("aaa") frm = tk.Tk()
py3study
2020/01/10
6900
Python GUI(Tkinter)初
gui编程 -- tkinter初识
Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
py3study
2018/08/02
7090
图形用户界面和游戏开发
GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的,Tk是一个工具包,最初是为Tcl设计的,后来被移植到很多其他的脚本语言中,它提供了跨平台的GUI控件。当然Tk并不是最新和最好的选择,也没有功能特别强大的GUI控件,事实上,开发GUI应用并不是Python最擅长的工作,如果真的需要使用Python开发GUI应用,wxPython、PyQt、PyGTK等模块都是不错的选择。
用户8442333
2021/05/19
1.8K0
python的tkinter编程(一)什么是tkinter,第一个基于tkinter的GUI编程,弹出窗口,创建按钮,并且在这个按钮上面加点击事件
1 创建出一个窗口 2 在窗口上面布局组件 3 让各种各样的组件活起来,也就是让各个组件有事件
一写代码就开心
2020/11/20
2.9K0
python的tkinter编程(一)什么是tkinter,第一个基于tkinter的GUI编程,弹出窗口,创建按钮,并且在这个按钮上面加点击事件
Python Tkinter Gui 常用组件介绍 基本使用
我们编写的Python代码会调用内置的Tkinter,Tkinter封装了访问Tk的接口; Tk是一个图形库,支持多个操作系统,使用Tcl语言开发; Tk会调用操作系统提供的本地GUI接口,完成最终的GUI;
EXI-小洲
2022/12/13
3K0
Python Tkinter Gui 常用组件介绍 基本使用
python学习之GUI(Tkinter
创建文本框,里面有一个按钮和文本框,通过获取文本框的内容,每点击一次按钮,都复制文本框中的内容并一起显示在文本框中。
py3study
2020/01/06
1.2K0
python--GUI编程--Tkinter
Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中
py3study
2018/08/02
3.9K0
Python 图形化界面基础篇:打开和关闭新窗口
在 Python 图形用户界面( GUI )应用程序中,创建和管理多个窗口是一项重要的任务。这些窗口可以用于不同的用途,例如显示附加信息、执行特定操作或以其他方式改善用户体验。在本文中,我们将深入研究如何使用 Python 的 Tkinter 库来打开和关闭新窗口,并演示如何在应用程序中实现这些功能。
小蓝枣
2023/09/17
1.6K0
Python 图形化界面基础篇:打开和关闭新窗口
Python 笔记:GUI编程(Tkinter)
Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下:
用户8442333
2021/05/17
5.3K0
Python 图形化界面基础篇:创建工具栏
在 Python 图形用户界面( GUI )应用程序中,工具栏是一个重要的界面元素,用于提供常用操作的快捷方式。工具栏通常包含图标按钮,每个按钮代表一个特定的操作。在本文中,我们将深入研究如何使用 Python 的 Tkinter 库创建工具栏,并演示如何在应用程序中实现这一功能。
小蓝枣
2023/09/21
6650
Python 图形化界面基础篇:创建工具栏
Python 图形化界面基础篇:监听按钮点击事件
在 Python 图形用户界面( GUI )应用程序开发中,监听按钮点击事件是一个非常重要的任务。按钮是用户与应用程序交互的一种常见方式,通过监听按钮的点击事件,你可以实现各种操作和功能。在本文中,我们将深入研究如何使用 Python 的 Tkinter 库来监听按钮的点击事件,并展示如何在点击事件发生时执行相应的操作。
小蓝枣
2023/09/14
1.5K0
Python 图形化界面基础篇:监听按钮点击事件
Python 图形化界面基础篇:使用包装器( Pack )布局元素
在 Python 图形化界面的基础篇课程中,我们将深入研究 Tkinter 库的布局管理器之一:包装器( Pack )布局。 Pack 布局是一种简单而有效的方式,用于在 Tkinter 应用程序中排列和布局 GUI 元素。它允许你沿着一个方向将元素堆叠在一起,这对于创建垂直或水平排列的元素非常有用。在本文中,我们将详细解释如何使用 Pack 布局管理器,包括创建、配置和定位 GUI 元素。
小蓝枣
2023/09/14
1.2K0
Python 图形化界面基础篇:使用包装器( Pack )布局元素
Python 图形化界面基础篇:使用框架( Frame )组织界面
在 Python 图形化界面基础篇的这篇文章中,我们将探讨如何使用 Tkinter 中的框架( Frame )来组织图形用户界面( GUI )。框架是一种用于分组和布局其他 GUI 元素的容器,它能够帮助我们更好地组织界面,提高代码的可维护性和可读性。在本文中,我们将详细解释如何创建和使用框架来构建更复杂的 GUI 界面。
小蓝枣
2023/09/13
2.9K0
Python 图形化界面基础篇:使用框架( Frame )组织界面
❤️【python入门项目】使用 Tkinter 的 日历 GUI 应用程序❤️
本文章为系列文章,共三个 python 入门项目。初学者可以尝试实现这些项目,并在 Python 编译环境中动手操作。
海拥
2021/08/24
2.9K0
python Tkinter按钮带参数
from Tkinter import * def cross(value):     text.insert(INSERT,'x') window =Tk() frame =Frame(window) frame.pack() text =Text(frame,height =3,width =10) text.pack() button=Button(frame,text="add",command = lambda:cross(text)) button.pack() window.mainl
py3study
2020/01/09
1.6K0
Python 图形化界面基础篇:添加按钮( Button )到 Tkinter 窗口
欢迎来到 Python 图形化界面基础篇的新篇章!在本文中,我们将专注于 Tkinter 中如何添加按钮( Button ),这是创建交互性 GUI 应用程序的关键元素之一。按钮用于触发操作,让用户与应用程序进行互动。我们将详细解释如何在 Tkinter 窗口中添加按钮,以及如何为按钮定义响应函数,使其在点击时执行特定操作。
小蓝枣
2023/09/13
3.3K0
Python 图形化界面基础篇:添加按钮( Button )到 Tkinter 窗口

相似问题

Python Tkinter GUI执行python脚本错误

213

GUI按钮按住- tkinter

51

python脚本的Tkinter GUI

116

GUI - tkinter制作按钮

10

使用Tkinter围绕python脚本创建gui

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档