Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用tkinter为Python程序创建UI。Tkinter中的按钮可以按下多次。我如何才能创建一个;“一个过程”;突然出现?_Python_Python 3.x_Button_Tkinter_Messagebox - Fatal编程技术网

使用tkinter为Python程序创建UI。Tkinter中的按钮可以按下多次。我如何才能创建一个;“一个过程”;突然出现?

使用tkinter为Python程序创建UI。Tkinter中的按钮可以按下多次。我如何才能创建一个;“一个过程”;突然出现?,python,python-3.x,button,tkinter,messagebox,Python,Python 3.x,Button,Tkinter,Messagebox,这是我尝试的简单UI import tkinter as ttk import subprocess import sys import time import os import tkinter.font as font from tkinter import messagebox from tkinter.ttk import * app = ttk.Tk() app.geometry("400x400") app.configure(bg='gray') phot

这是我尝试的简单UI

import tkinter as ttk
import subprocess
import sys
import time
import os
import tkinter.font as font
from tkinter import messagebox
from tkinter.ttk import *

app = ttk.Tk()

app.geometry("400x400")
app.configure(bg='gray')

photo = ttk.PhotoImage(file=r"C:\Users\ex\ex_button_active.png")
myFont = font.Font(family='Helvetica', size=20, weight='normal')

ttk.Label(app, text='Ex', bg='gray', font=(
    'Verdana', 15)).pack(side=ttk.TOP, pady=10)
app.iconbitmap(r'C:\Users\ex\ex_icon.ico')


def ex_activation():
    global pro
    print("Running program!")
    pro = subprocess.Popen("python programex.py", shell=True)


def ex_stop():
    global pro
    print("Stopping Program... Please Wait!")
    os.kill(pro.pid, 0)


ex_activation_button = ttk.Button(app, bg='black', image=photo, width=120, height=120, command=ex_activation)
ex_activation_button += 1
if ex_activation_button < 1:
    messagebox.showinfo("showinfo", "In Order to Run Again, Press ""Stop Program""")

ex_stop_button = ttk.Button(app, bg='Gray', text='Stop Program', width=12, command=ex_stop, height=3)

ex_stop_button['font'] = myFont

app.title("Ex")
ex_activation_button.pack(side=ttk.TOP)
ex_stop_button.pack(side=ttk.LEFT)

# app.mainloop()
while True:
    try:
        app.update()
        app.update_idletasks()
    except KeyboardInterrupt:
        pass
将tkinter作为ttk导入
导入子流程
导入系统
导入时间
导入操作系统
将tkinter.font导入为字体
从tkinter导入消息框
从tkinter.ttk导入*
app=ttk.Tk()
附录几何(“400x400”)
应用程序配置(bg='gray')
photo=ttk.PhotoImage(文件=r“C:\Users\ex\ex\u button\u active.png”)
myFont=font.font(family='Helvetica',size=20,weight='normal')
ttk.标签(应用程序,文本='Ex',背景='gray',字体=(
'Verdana',15)).pack(侧面=ttk.TOP,侧面=10)
app.iconbitmap(r'C:\Users\ex\ex\u icon.ico')
def ex_激活():
全球职业选手
打印(“正在运行的程序!”)
pro=subprocess.Popen(“python programex.py”,shell=True)
def ex_stop():
全球职业选手
打印(“正在停止程序…请稍候!”)
os.kill(pro.pid,0)
ex_激活按钮=ttk.按钮(应用程序,背景为黑色,图像为照片,宽度为120,高度为120,命令为ex_激活)
ex_激活按钮+=1
如果ex_激活按钮<1:
messagebox.showinfo(“showinfo”,“要再次运行,请按“停止程序”)
ex_stop_button=ttk.按钮(应用程序,背景为灰色,文本为停止程序,宽度为12,命令为ex_stop,高度为3)
ex_停止按钮['font']=myFont
附录标题(“Ex”)
ex_激活按钮组件(侧面=ttk.顶部)
ex_stop_按钮组件(侧面=ttk.左侧)
#app.mainloop()
尽管如此:
尝试:
app.update()
app.update_idletasks()
除键盘中断外:
通过

这里的目标是在多次单击按钮时添加“仅一个进程”警告。真正的问题是,在单击停止按钮后,如何重置该计数器的开始按钮单击次数。这是一个循环程序,这就是为什么我有一个停止按钮。非常感谢您的帮助

您可以通过更改按钮的状态来禁用该按钮。禁用后,无法单击该按钮

#禁用按钮:
ex_激活按钮[“状态”]=“已禁用”
#重新启用按钮:
ex_激活按钮[“状态”]=“正常”
#以下是您需要添加的更改:
def ex_激活():
全球职业选手
打印(“正在运行的程序!”)
ex_激活按钮[“状态”]=“已禁用”
pro=subprocess.Popen(“python programex.py”,shell=True)
def ex_stop():
全球职业选手
打印(“正在停止程序…请稍候!”)
os.kill(pro.pid,0)
ex_激活按钮[“状态”]=“正常”

您可以通过更改按钮的状态来禁用该按钮。禁用后,无法单击该按钮

#禁用按钮:
ex_激活按钮[“状态”]=“已禁用”
#重新启用按钮:
ex_激活按钮[“状态”]=“正常”
#以下是您需要添加的更改:
def ex_激活():
全球职业选手
打印(“正在运行的程序!”)
ex_激活按钮[“状态”]=“已禁用”
pro=subprocess.Popen(“python programex.py”,shell=True)
def ex_stop():
全球职业选手
打印(“正在停止程序…请稍候!”)
os.kill(pro.pid,0)
ex_激活按钮[“状态”]=“正常”

嘿!谢谢你的回答。问题是,我希望按钮再次工作,一旦停止按钮被按下。这是可能的吗?@RedgarPro是的,这是可能的,你可以在你的停止按钮命令功能中使用
ex\u激活按钮['state']='normal'
。嘿!谢谢你的回答。问题是,我希望按钮再次工作,一旦停止按钮被按下。这是可能的吗?@RedgarPro是的,这是可能的,你可以在你的停止按钮命令功能中使用
exu-activation\u按钮['state']='normal'