python怎么使用tkinter修改填写网站表单-在python中使用Tkinter编辑标题b

在python中使用Tkinter编辑标题b

我正在尝试向窗口添加自定义标题,但遇到了麻烦。 我知道我的代码不正确,但是当我运行它时,它将创建2个窗口,一个仅带有标题tk,另一个更大的带有“ Simple Prog”的窗口。 如何使tk窗口具有标题“ Simple Prog”,而不是具有新的附加窗口。 我不认为我应该拥有Tk()部分,因为当我在完整代码中拥有Tk()部分时,就会出现错误

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")

Dan asked 2020-01-07T05:45:03Z

8个解决方案

83 votes

如果您没有创建根窗口,当您尝试创建任何其他窗口小部件时,Tkinter会为您创建一个。 因此,在您的self.make_widgets()中,由于初始化框架时尚未创建根窗口,因此Tkinter将为您创建一个根窗口。 然后,您调用ABC.make_widgets(self),它将创建第二个根窗口。 这就是为什么您看到两个窗口的原因。

编写良好的Tkinter程序应始终在创建任何其他小部件之前显式创建一个根窗口。

当您修改代码以显式创建根窗口时,最终将得到一个带有预期标题的窗口。

例:

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()

还要注意使用self.make_widgets()而不是ABC.make_widgets(self)。尽管两者最终都做相同的事情,但前者是调用函数的正确方法。

Bryan Oakley answered 2020-01-07T05:45:41Z

25 votes

我不确定我是否正确,但这是您想要的吗?

root = tkinter.Tk()

root.title("My Title")

根是您创建的窗口,其余的很容易说明。

user8879510 answered 2020-01-07T05:46:05Z

13 votes

尝试类似的方法:

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()

现在,您应该有一个带有标题的框架,然后可以为如果您愿意,可以使用其他小部件。

lugte098 answered 2020-01-07T05:46:29Z

1 votes

自己完成此操作后,您可以通过以下方式进行操作:

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")

您将看到标题更改,并且不会看到两个窗口。 在python库文档的Tkinter参考资料中,我将parent保留为master。

Danny Staple answered 2020-01-07T05:46:54Z

1 votes

对于遇到打开两个窗口的问题并遇到此问题的任何人。 这是我偶然发现解决方案的方式。

这个问题中的代码产生两个窗口的原因是

Frame.__init__(self, parent)

正在运行之前

self.root = Tk()

简单的解决方法是在运行Frame .__ init __()之前运行Task()。

self.root = Tk()

Frame.__init__(self, parent)

为什么不是这种情况,我不确定。

Rethipher answered 2020-01-07T05:47:31Z

0 votes

self.parent是对实际窗口的引用,因此self.root.title应该是self.parent.title,而self.root不应该存在。

Colin Valliant answered 2020-01-07T05:47:52Z

0 votes

widget.winfo_toplevel().title("My_Title")

更改Tk为子代的Tk或Toplevel的标题。

Nae answered 2020-01-07T05:48:12Z

0 votes

python GUI示例

这是一个例子:

from tkinter import *;

screen = Tk();

screen.geometry("370x420"); //size of screen

更改窗口名称

screen.title("Title Name")

运行:

screen.mainloop();

123 answered 2020-01-07T05:48:45Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在tkinter实现按钮弹出表单,你可以使用tkinter.messagebox模块的askstring函数来创建一个输入框,然后在按钮的回调函数调用该函数。以下是一个示例代码: ```python import tkinter as tk from tkinter import messagebox def show_form(): result = tk.messagebox.askstring("表单", "请输入姓名:") if result: tk.messagebox.showinfo("结果", f"你输入的姓名是: {result}") window = tk.Tk() window.title("按钮弹出表单示例") window.geometry("400x300") button = tk.Button(window, text="弹出表单", command=show_form) button.pack() window.mainloop() ``` 这段代码创建了一个窗口,其包含一个按钮。当点击按钮时,会弹出一个输入框要求用户输入姓名。用户输入后,会弹出一个消息框显示输入的姓名。你可以根据需要修改代码来适应你的表单需求。 #### 引用[.reference_title] - *1* [Python+Tkinter 创建一个简单的点击弹出提示框的窗体程序](https://blog.csdn.net/qq_41107671/article/details/115178626)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python聊天室(tkinter写界面,treading,socket实现私聊群聊查看聊天记录,mysql存储数据)](https://blog.csdn.net/weixin_42768634/article/details/116005425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值