Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
Function Tkinter未打开窗口_Function_User Interface_Button_Tkinter_Window - Fatal编程技术网

Function Tkinter未打开窗口

Function Tkinter未打开窗口,function,user-interface,button,tkinter,window,Function,User Interface,Button,Tkinter,Window,我正在创建一个程序,允许用户制作自定义骰子,但当我打开一个GUI窗口,其中有一个按钮调用后端骰子滚动逻辑时,它会中断。换句话说,窗口不会打开,代码只在终端中运行。它不会像我希望的那样单击按钮,而是在我运行代码时,它不会打开任何GUI窗口,代码在终端中执行。代码在没有GUI的情况下可以工作,如果我去掉dice按钮回调,GUI可以工作,但在一起就不行了 感谢您的帮助 随机导入 将tkinter作为tk导入 def dice_roll(): 骰子=[] x=0 #用于检查输入是否为整数,如果不是,则会

我正在创建一个程序,允许用户制作自定义骰子,但当我打开一个GUI窗口,其中有一个按钮调用后端骰子滚动逻辑时,它会中断。换句话说,窗口不会打开,代码只在终端中运行。它不会像我希望的那样单击按钮,而是在我运行代码时,它不会打开任何GUI窗口,代码在终端中执行。代码在没有GUI的情况下可以工作,如果我去掉dice按钮回调,GUI可以工作,但在一起就不行了

感谢您的帮助

随机导入
将tkinter作为tk导入
def dice_roll():
骰子=[]
x=0
#用于检查输入是否为整数,如果不是,则会收到一条消息
尽管如此:
当x==0时:
尝试:
SIDE_AMT=int(输入(“您想要多少边?(最小为2,最大为无限):”)#AMT为amount
x=1
除值错误外:
打印(“对不起,必须是整数。”)
如果边值>1:
对于范围内的侧面(侧面金额):
打印(f“您希望{side+1}面是什么?:”)
dice.append(str(input()))
打破
其他:
打印(“你不能有一面的骰子!”)
x=0
#滚动函数
def辊()
骰子侧=随机选择(骰子)
打印(f“我选择{dice_side}!”)
滚动次数=0
尽管如此:
如果roll_num==0:
spin_it=str(输入(“如果你想掷骰子,请键入‘掷骰子’”))
如果旋转=滚动:
滚动()
其他:
打印(“对不起,您必须正确键入卷。”)
滚动次数+=1
elif roll_num==1:
尽管如此:
spin_it=str(输入(“如果你想再次掷骰子,请键入‘掷骰子’!:”)
如果旋转=滚动:
滚动()
其他:
打印(“对不起,您必须正确键入卷。”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
gui=tk.tk()
gui.title(“掷骰子”)
图形用户界面几何(“1912x1090”)
gui.configure(bg='#a2a2a1',borderwidth=5,
救济(“提出”)
#头衔
title=tk.Label(gui,text='Unique Dice',font=(“次
新罗马语(52))
title.configure(bg='#a2a2a1',fg='#195190',
borderwidth=3,浮雕(凸起)
#掷骰子?
dice=tk.按钮(gui,
text=“是!”,
fg=“红色”,
command=dice\u roll())
no_dice=tk.按钮(gui,
text=“否”,
fg=“红色”,
命令=退出)
#frame=tk.frame(gui,高度=200,宽度=200)
#帧['borderwidth']=10
#帧['relief']='sunken'
#frame.pack()
骰子包
没有骰子。包()
title.pack()
gui.mainloop()

您可能需要执行以下操作:

import tkinter as tk
from random import choice


root = tk.Tk()
root.geometry('400x600')
root.resizable(False, False)
root.config(bg='light blue')

dice_numbers = [1, 2, 3, 4, 5, 6]
rolled_nums = []


def roll():
    if len(rolled_nums):
        rolled_nums[0].pack_forget()
        rolled_nums.pop(0)
    chosen_number = choice(dice_numbers)
    text = tk.Label(root, text=f'{chosen_number}',
                                font='arial 500 bold', bg='light blue')
    text.pack()
    rolled_nums.append(text)


button = tk.Button(root, text='Roll Dice!', font='arial 20 bold', relief='raised', width='300',
                   bg='dark red', fg='black', command=lambda: roll())
button.pack()

root.mainloop()

您可以自由调整此代码,如果您有问题->询问首先在
如果_uname\uuuuuu=='\uuuu main\uuuuuu':
您应该只放置主函数,并且该部分代码将永远不会执行,因为有一个while循环正在阻止它,所以您到底想显示什么?它不会打开任何GUI,因为脚本在loopOops,当我在那里键入代码时,我指的是除name==main下的东西以外的所有东西,用于骰子掷骰功能。那么为什么在按钮上使用lambda命令?@KylenWilliams tbh idk我应该了解它,但你可以尝试不使用它,看看会发生什么