Python 3 tkinker-如何将此代码输出到gui中?
如何将此代码导入gui?我尝试将其添加到按钮中,但失败了 我希望所有的Python 3 tkinker-如何将此代码输出到gui中?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,如何将此代码导入gui?我尝试将其添加到按钮中,但失败了 我希望所有的def say_hi(self)都在gui中,而不是打印到shell中,而且打印输出在控制台中效果最好,而不是在python shell中 import sys import time from random import randint import tkinter as tk class Application(tk.Frame): def __init__(self, master=None):
def say_hi(self)
都在gui中,而不是打印到shell中,而且打印输出在控制台中效果最好,而不是在python shell中
import sys
import time
from random import randint
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.pack()
self.create_widgets()
# self.roll is the button
def create_widgets(self):
self.roll = tk.Button(self)
self.roll["text"] = "rolldice"
self.roll["command"] = self.say_hi
self.roll.pack(side="left")
#self.quit is the kill button
self.quit = tk.Button(self, text="QUIT", fg="red",
command=root.destroy)
self.quit.pack(side="right")
self.label = tk.Label(self, text='ROLL THE DICE !')
self.label.pack()
# this is my loading result.
def say_hi(self):
d = 0
for x in range(0,7):
for x in range (0,5):
b = "Loading" + "." * x
a = " "
print (b, end="\r")
time.sleep(0.1)
print (a, end="\r")
time.sleep(0)
print("finished rolling!")
time.sleep(2)
for x in range(0,7):
for x in range (0,5):
b = "printing" + "." * x
a = " "
print (b, end="\r")
time.sleep(0.1)
print (a, end="\r")
time.sleep(0)
print ("printed")
print ("here it is thankyou for using us!")
print (" ")
value = randint(1, 6)
self.label['text'] = value
self.label.pack()
root = tk.Tk()
app = Application(master=root)
app.mainloop()
您可以使用
Lable
和StringVar
标签小部件是用于在屏幕上显示文本或图像的标准Tkinter小部件。标签只能以单一字体显示文本,但文本可能跨越多行。此外,其中一个字符可以加下划线,例如,用于标记键盘快捷键
这里有一个很好的解释如何使用它
编辑
如果您希望用户能够显示用户可以就地操作的数据,那么使用小部件可能更容易
希望这有帮助 试试这个。而不是印刷
self.label['text']=b
self.label.pack()
root.update()
它会更新小部件内部正在打印的值
import sys
import time
from random import randint
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.pack()
self.create_widgets()
# self.roll is the button
def create_widgets(self):
self.roll = tk.Button(self)
self.roll["text"] = "rolldice"
self.roll["command"] = self.say_hi
self.roll.pack(side="left")
#self.quit is the kill button
self.quit = tk.Button(self, text="QUIT", fg="red",
command=root.destroy)
self.quit.pack(side="right")
self.label = tk.Label(self, text='ROLL THE DICE !', padx=20)
self.label.pack()
# this is my loading result.
def say_hi(self):
d = 0
for x in range(0,7):
for x in range (0,5):
b = "Loading" + "." * x
a = " "
#self.label.pack_forget()
self.label['text'] = b
self.label.pack()
#root.update_idletasks()
root.update()
print (b, end="\r")
time.sleep(0.2)
print (a, end="\r")
time.sleep(0)
print("finished rolling!")
for x in range(0,7):
for x in range (0,5):
b = "Printing" + "." * x
a = " "
#self.label.pack_forget()
self.label['text'] = b
self.label.pack()
#root.update_idletasks()
root.update()
print (b, end="\r")
time.sleep(0.2)
print (a, end="\r")
time.sleep(0)
print ("printed")
print ("here it is thankyou for using us!")
print (" ")
value = randint(1, 6)
self.label['text'] = value
self.label.pack()
root = tk.Tk()
app = Application(master=root)
app.mainloop()
你试过使用标签并更新其中的文本吗?你的代码弄乱了缩进级别。没有,因为我正在学习如何使用tk。你能给我看看吗?它来自一些“如果”语句对不起!您的输出由多个加载和多个打印组成,然后最终打印值是您想要的吗?看起来像这样;(我不在学校,这不是我的家庭作业,哈哈,我只是想学习python,但无论如何,谢谢你,我也会看看网站的!