J'ai écrit un script dans un fichier .py que je voudrais appeler à partir d'un autre fichier principal de mon programme. Mais quand je fais cela, il ne s'initialise pas et donne le même résultat que lorsqu'il est exécuté directement.Le script tkinter py donne une sortie différente lorsqu'il est appelé depuis un autre script
est ici le code du fichier principal où j'importer le fichier sous-test en tant que module et l'appeler lorsque l'utilisateur clique sur un bouton:
#!/usr/bin/python
import tkinter as tk
from tkinter import ttk
import subTest
from subTest import SubTest
class Window(tk.Tk):
def __init__(self, parent):
tk.Tk.__init__(self, parent)
tk.Tk.wm_title(self, "Test")
self.parent = parent
self.initialize()
def initialize(self):
self.geometry("600x300+30+30")
label = tk.Label(self, text="Test")
label.pack(pady=20,padx=10)
self.button = ttk.Button(self, text='gotosubtest', command = self.callsubtest)
self.button.pack()
def callsubtest(self):
app = SubTest(None)
app.mainloop()
if __name__ == "__main__":
window = Window(None)
window.mainloop()
et voici le code du fichier Subtest contenant un texte d'entrée boîte qui devrait être initialisée à 320. Ceci est un exemple simplifié du problème. Lorsque subTest est exécuté directement, cette valeur par défaut de l'entrée est affichée dans la zone de texte. Mais quand subTest est appelé depuis le main, la valeur n'est pas affichée. Une idée de ce qui ne va pas avec mon code? merci d'avance à tous les conseils utiles pour un débutant python;)
#!/usr/bin/python
import tkinter as tk
from tkinter import Entry
class SubTest(tk.Tk):
def __init__(self, parent):
tk.Tk.__init__(self, parent)
tk.Tk.wm_title(self, "SubTest")
self.parent = parent
self.initializesubtest()
def initializesubtest(self):
self.geometry("510x480")
self.minx = tk.DoubleVar()
self.minx.set(320)
Entry(self, textvariable=self.minx,width=5).grid(row=21,column=1)
tk.Label(self, text="Min X").grid(row=22,column=1)
if __name__ == "__main__":
app = SubTest(None)
app.mainloop()
Merci! il semble en remplaçant dans le script subTest tk.Tk par Toplevel, cela fonctionne. – Jeremie