我必须为学校编写一个游戏。我决定在Pygame中编写它,但我决定在tkinter中创建一个设置窗口。问题是,当我执行代码时,它有两种类型:一种是我想要的,另一种是空白的GUI
我该怎么做才能解决这个问题
谢谢大家!
import tkinter
import shutil
class Options(tkinter.Tk):
def __init__(self):
root = tkinter.Tk()
root.maxsize(300,200)
root.minsize(300,200)
root.title('Difficulté du jeu')
tkinter.Tk.__init__(self)
tkinter.Label(root, text= 'Avant de démarrer, merci de selectionner \n une difficulté ou bien fermer la fenêtre pour restaurer \n les paramètres pérécdents. \n \n').pack()
tkinter.Label(root, text= 'Facile ------------ Classique -------------Débutant').pack()
g_slider_value = 0
slider = tkinter.Scale(root, orient = tkinter.HORIZONTAL, length = 300, width = 20, sliderlength = 60, from_ = 45, to = 20, command = self.get_slider)
slider.pack()
self.slider = slider
tkinter.Button(root, text='Enregistrer la valeur', command=self.show_values).pack()
tkinter.Button(root, text='Quitter', command=root.destroy).pack()
def get_slider(self, event):
g_slider_value = self.slider.get()
print(g_slider_value)
def show_values(self):
monFichiersource = open('para.txt', 'r')
monFichiersource.readline()
#celà permet de créer le fichier tout d'abord pour ensuite supprimer la première ligne si elle existe
monFichiercible = open('para.txt', 'w')
shutil.copyfileobj(monFichiersource, monFichiercible)
#permet d'écraser les données de l'ancien fichier avec un nouveau vide
monFichier=open('para.txt','a') #on ouvre le répertoire texte
monFichier.write(str(self.slider.get())) #on ajoute la valeur du slider
monFichier.close() #on ferme le fichier
print('Paramètre enregistré.')
Options().mainloop()
好的,那么您将两种方法组合在一起构建tkinter窗口。有一种非OOP方法,它不使用通常将
Tk()
定义为根并使用函数构建的类,还有一种类方法,通常从Tk()
继承并使用类属性和方法构建gui让我们来修正你的代码
您永远不希望在一个tkinter中多次调用
Tk()
。您看到2个窗口的原因是,您的类和内部__init__
都在调用Tk()
您还没有关闭您打开的3个文件中的2个,因此可能考虑使用^ {CD6>}而不是^ {< CD7>},因为^ {CD6>}方法将自动关闭。
这是你的代码清理
相关问题 更多 >
编程相关推荐