Python 3 tkinker-如何将此代码输出到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):

如何将此代码导入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):
        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,但无论如何,谢谢你,我也会看看网站的!