Ik probeer een aangepaste titel aan een raam toe te voegen, maar ik heb het probleem mee. Ik weet dat mijn code niet gelijk is, maar wanneer ik het ren, creëert het in plaats daarvan 2 Windows, één met alleen de titel TK en een ander groter venster met “Simple Prog”. Hoe maak ik het, zodat het TK-venster de titel “Simple PROG” heeft in plaats van een nieuw extra venster te hebben. Ik denk niet dat ik het TK () deel moet hebben, want als ik dat in mijn volledige code heb, er is een foutmelding
from tkinter import Tk, Button, Frame, Entry, END
class ABC(Frame):
def __init__(self,parent=None):
Frame.__init__(self,parent)
self.parent = parent
self.pack()
ABC.make_widgets(self)
def make_widgets(self):
self.root = Tk()
self.root.title("Simple Prog")
1, Autoriteit 100%
Als u geen rootvenster maakt, maakt TKINER één voor u wanneer u probeert een andere widget te maken. Dus, in uw __init__
, omdat u nog geen rootvenster hebt gemaakt wanneer u het frame initialiseert, zal TKINER één voor u maken. Vervolgens belt u make_widgets
die een tweede -waaiervenster maakt. Daarom zie je twee ramen.
Een goed geschreven TKIER-programma moet altijd expliciet een root-venster maken voordat u andere widgets maakt.
Wanneer u uw code aanwijst om het root-venster uitdrukkelijk te maken, eindigt u met één venster met de verwachte titel.
Voorbeeld:
from tkinter import Tk, Button, Frame, Entry, END
class ABC(Frame):
def __init__(self,parent=None):
Frame.__init__(self,parent)
self.parent = parent
self.pack()
self.make_widgets()
def make_widgets(self):
# don't assume that self.parent is a root window.
# instead, call `winfo_toplevel to get the root window
self.winfo_toplevel().title("Simple Prog")
# this adds something to the frame, otherwise the default
# size of the window will be very small
label = Entry(self)
label.pack(side="top", fill="x")
root = Tk()
abc = ABC(root)
root.mainloop()
Let ook op het gebruik van self.make_widgets()
in plaats van ABC.make_widgets(self)
. Hoewel beide uiteindelijk hetzelfde doen, is de eerste de juiste manier om de functie aan te roepen.
Antwoord 2, autoriteit 75%
Hier is het lekker simpel.
root = tkinter.Tk()
root.title('My Title')
root
is het venster dat u maakt en root.title()
stelt de titel van dat venster in.
Antwoord 3, autoriteit 17%
Probeer zoiets als:
from tkinter import Tk, Button, Frame, Entry, END
class ABC(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
root = Tk()
app = ABC(master=root)
app.master.title("Simple Prog")
app.mainloop()
root.destroy()
Nu zou je een frame met een titel moeten hebben, daarna kun je vensters toevoegen voor
verschillende widgets als je wilt.
Antwoord 4, autoriteit 4%
Voorbeeld van python GUI
Hier is een voorbeeld:
from tkinter import *;
screen = Tk();
screen.geometry("370x420"); //size of screen
De naam van het venster wijzigen
screen.title('Title Name')
Voer het uit:
screen.mainloop();
Antwoord 5, autoriteit 2%
Ik heb ontdekt dat dit werkt:
window = Tk()
window.title('Window')
Misschien helpt dit?
Antwoord 6, autoriteit 2%
Een punt dat benadrukt moet worden is:
De .title()-methode moet voor de .mainloop() gaan
Voorbeeld:
from tkinter import *
# Instantiating/Creating the object
main_menu = Tk()
# Set title
main_menu.title("Hello World")
# Infinite loop
main_menu.mainloop()
Anders kan deze fout optreden:
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/tkinter/__init__.py", line 2217, in wm_title
return self.tk.call('wm', 'title', self._w, string)
_tkinter.TclError: can't invoke "wm" command: application has been destroyed
En de titel verschijnt niet in het bovenste frame.
Antwoord 7
Als je dit net zelf hebt gedaan, kun je het op deze manier doen:
from tkinter import Tk, Button, Frame, Entry, END
class ABC(Frame):
def __init__(self, parent=None):
Frame.__init__(self, parent)
self.parent = parent
self.pack()
ABC.make_widgets(self)
def make_widgets(self):
self.parent.title("Simple Prog")
U ziet de titelverandering en u krijgt geen twee vensters. Ik heb mijn parent
als master
zoals in de Tkinter-referentie-dingen in de documentatie van de Python-bibliotheek.
8
Voor iedereen die stroomt in de kwestie van het openen van twee vensters en deze vraag uitloopt. Hier is hoe ik op een oplossing struikelde.
De reden waarom de code in deze vraag twee vensters produceert, is omdat
Frame.__init__(self, parent)
wordt eerder uitgevoerd
self.root = Tk()
De Simple Fix is om TK () te draaien voordat het frame wordt uitgevoerd .__ init _ ()
self.root = Tk()
Frame.__init__(self, parent)
Waarom dat is het geval, ik ben niet helemaal zeker.
9
Eenvoudige methode:
root = Tk()
root.title('Hello World')
10
Zelf.parent is een verwijzing naar het eigenlijke venster, dus zelf .HOOT.Titel zou zelf.parent.title en zelf moeten bestaan.
11
Ik heb een oplossing gevonden die u zou moeten helpen:
from tkinter import Tk, Button, Frame, Entry, END
class ABC(Frame):
def __init__(self,master=None):
super().__init__(master)
self.pack()
self.master.title("Simple Prog")
self.make_widgets()
def make_widgets(self):
pass
root = Tk()
app = ABC(master=root)
app.mainloop()
Gevonden op: docs.python.org