python的tkinter库关于创建窗口的一些属性设置

前言

tkinter库是python自带的功能库,功能强大,设计界面也简单,可能的不足就是界面不是很美观,然后代码量很大。但是自己学习和使用已经足够了,而且如果使用Canvas画布的功能,界面也可以做的非常漂亮。
这篇文章主要介绍一些关于窗口的参数设置,比如窗口的背景色,如何获取窗口的位置和大小,如何设置窗口透明,如何设置窗口为工具窗口,如何设置窗口为最顶层,如何去除窗口边框,如何鼠标拖动窗口。

窗口背景色

import tkinter as tk
top=tk.Tk()
top.title('我是一个窗口')
top['bg']='pink'	# 修改窗口背景色
top.mainloop()

在这里插入图片描述

获取窗口的位置和大小

需要使用到bind窗口函数

import tkinter as tk
def WinUpdate(event):
	x = top.winfo_x()
	y = top.winfo_y()
	top_w = top.winfo_width()
	top_h = top.winfo_height()
	print(f"窗口位于x:{x}-y:{y},窗口宽为{top_w}-高为{top_h}")
top=tk.Tk()
top.title('我是一个窗口')
top['bg']='pink'	# 修改窗口背景色
top.bind("<Configure>",WinUpdate)
top.mainloop()

在这里插入图片描述

设置窗口透明

需要设置透明色,然后将窗口颜色修改为此透明色,结果就是在窗口区域内,一切与设置的透明色相同的颜色都将变为透明。

import tkinter as tk
def WinUpdate(event):
	x = top.winfo_x()
	y = top.winfo_y()
	top_w = top.winfo_width()
	top_h = top.winfo_height()
	print(f"窗口位于x:{x}-y:{y},窗口宽为{top_w}-高为{top_h}")
top=tk.Tk()
top.title('我是一个窗口')

transparent_color = 'pink'

top['bg']=transparent_color	# 修改窗口背景色

top.wm_attributes("-transparentcolor", transparent_color)  # 设置窗口中<transparent_color>颜色部分设为透明,该部分相当于不再是窗口范围内,无法监测鼠标事件

top.bind("<Configure>",WinUpdate)
top.mainloop()

在这里插入图片描述

将窗口设置为工具窗口

工具窗口没有全屏和缩小化,只有关闭

import tkinter as tk
def WinUpdate(event):
	x = top.winfo_x()
	y = top.winfo_y()
	top_w = top.winfo_width()
	top_h = top.winfo_height()
	print(f"窗口位于x:{x}-y:{y},窗口宽为{top_w}-高为{top_h}")
top=tk.Tk()
top.title('我是一个窗口')

transparent_color = 'pink'

top['bg']=transparent_color	# 修改窗口背景色

# top.wm_attributes("-transparentcolor", transparent_color)  # 设置窗口中<transparent_color>颜色部分设为透明,该部分相当于不再是窗口范围内,无法监测鼠标事件

top.wm_attributes("-toolwindow",True)#设置为工具窗口,只能关闭,不能最小化

# top.bind("<Configure>",WinUpdate)
top.mainloop()

在这里插入图片描述

设置窗口位于屏幕最上方

即显示在屏幕的最上方。
加入下面一行代码:

top.wm_attributes("-topmost", True)  # 设置为最上面的窗口

在这里插入图片描述

去除窗口边框

这步需要谨慎操作,因为边框隐藏之后,右上角的关闭按钮也消失了,需要设置关闭按钮,来关闭窗口。

top.overrideredirect(True)#除去窗口的边框

在这里插入图片描述

窗口居中

win_width = top.winfo_screenwidth()  # 电脑屏幕宽度
win_height = top.winfo_screenheight()  # 电脑屏幕高度
top_w = int(1 / 3 * win_height)  # 窗口宽度	自己设定想要的
top_h = int(1 / 3 * win_height)  # 窗口高度
top_place = [int((win_width - top_w) / 2), int((win_height - top_h) / 3)]  # 窗口起始坐标
# print("窗口大小:",top_w,top_h)
top.geometry(str(top_w) + 'x' + str(top_h) + '+' + str(top_place[0]) + '+' + str(top_place[1]))  # 位置居中

在这里插入图片描述

鼠标拖动窗口

需要bind两个函数,一个是鼠标点击函数,一个鼠标拖动函数,然后实时的获取鼠标移动距离,去移动窗口位置。

import tkinter as tk

def WinUpdate(event):
	x = top.winfo_x()
	y = top.winfo_y()
	top_w = top.winfo_width()
	top_h = top.winfo_height()
	print(f"窗口位于x:{x}-y:{y},窗口宽为{top_w}-高为{top_h}")

def func1(event):
    new_x=top.winfo_x()+event.x-site_list[0]
    new_y=top.winfo_y()+event.y-site_list[1]
    if new_x>win_w-top_w:
        new_x=win_w-top_w
    if new_x<0:
        new_x=0
    if new_y<0:
        new_y=0
    if new_y>win_h-top_h:
        new_y=win_h-top_h
    site="{}x{}+{}+{}".format(top_w,top_h,new_x,new_y)
    top.geometry(site)

def func2(event):#记录移动前鼠标位置
    site_list[0]=event.x
    site_list[1]=event.y

def exit_top():
	top.destroy()	# 销毁窗口

site_list = [0,0]	# 保存鼠标的位置
top=tk.Tk()
top.title('我是一个窗口')

transparent_color = 'pink'

top['bg']=transparent_color	# 修改窗口背景色

# top.wm_attributes("-transparentcolor", transparent_color)  # 设置窗口中<transparent_color>颜色部分设为透明,该部分相当于不再是窗口范围内,无法监测鼠标事件

# top.wm_attributes("-toolwindow",True)#设置为工具窗口,只能关闭,不能最小化

# top.wm_attributes("-topmost", True)  # 设置为最上面的窗口

# top.overrideredirect(True)#除去窗口的边框

win_w = top.winfo_screenwidth()  # 电脑屏幕宽度
win_h = top.winfo_screenheight()  # 电脑屏幕高度
top_w = int(1 / 3 * win_h)  # 窗口宽度	自己设定想要的
top_h = int(1 / 3 * win_h)  # 窗口高度
top_place = [int((win_w - top_w) / 2), int((win_h - top_h) / 3)]  # 窗口起始坐标
# print("窗口大小:",top_w,top_h)
top.geometry(str(top_w) + 'x' + str(top_h) + '+' + str(top_place[0]) + '+' + str(top_place[1]))  # 位置居中


btn = tk.Button(top,text='exit',bd=0,bg='black',fg='red',command=exit_top)
btn.pack()

top.bind("<B1-Motion>",func1)#鼠标拖动事件
top.bind("<Button-1>",func2)#鼠标单击事件
# top.bind("<Configure>",WinUpdate)

top.mainloop()

不会制作动图,这里就没放置图片了。

最后

先这样吧。

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要在Python Tkinter中弹出子窗口,可以按照以下步骤进行操作: 1. 导入Tkinter模块: ```python import tkinter as tk ``` 2. 创建窗口和子窗口对象: ```python root = tk.Tk() # 创建窗口对象 popup = tk.Toplevel() # 创建窗口对象 ``` 3. 将子窗口的parent属性设置为主窗口对象: ```python popup.transient(root) ``` 4. 在子窗口中添加需要的控件: ```python popup_label = tk.Label(popup, text="这是子窗口") popup_label.pack() ``` 5. 显示子窗口: ```python popup.grab_set() popup.mainloop() ``` 完整的代码示例如下: ```python import tkinter as tk root = tk.Tk() def open_popup(): popup = tk.Toplevel() popup.transient(root) popup_label = tk.Label(popup, text="这是子窗口") popup_label.pack() popup.grab_set() popup.mainloop() popup_button = tk.Button(root, text="打开子窗口", command=open_popup) popup_button.pack() root.mainloop() ``` ### 回答2: Python tkinter 弹出子窗口是常用的 GUI 编程技巧之一。在 Python 中,可以使用 Toplevel 对象或者使用自定义的子窗口类来实现弹出子窗口的功能。下面是一些具体的操作方法: 1. 使用 Toplevel 对象弹出子窗口Python 中,可以使用 Toplevel 对象来创建一个新的顶层窗口(也就是子窗口),并将其弹出到屏幕上。具体的操作方法如下: ```python import tkinter as tk # 创建窗口对象 root = tk.Tk() # 创建按钮对象 btn = tk.Button(root, text="弹出子窗口") # 定义弹出子窗口函数 def open_window(): # 创建新的顶层窗口 top = tk.Toplevel(root) top.title("子窗口") # 创建标签对象,添加到子窗口上 label = tk.Label(top, text="这是子窗口") label.pack() # 将弹出子窗口函数绑定到按钮事件上 btn.config(command=open_window) # 将按钮添加到主窗口上 btn.pack() # 进入消息循环 root.mainloop() ``` 在这个例子中,我们首先创建了一个主窗口对象,然后创建了一个按钮对象,并定义了一个名为 `open_window` 的函数,用来弹出子窗口。在函数中,我们使用 `Toplevel` 对象创建了一个新的顶层窗口,并将其添加到主窗口上。最后,我们将函数绑定到按钮上,并将按钮添加到主窗口上。运行程序后,点击按钮即可弹出子窗口。 2. 使用自定义的子窗口类弹出子窗口 除了使用 `Toplevel` 对象,我们还可以使用自定义的子窗口类来弹出子窗口。具体的操作方法如下: ```python import tkinter as tk class SubWindow(tk.Toplevel): def __init__(self, master=None): super().__init__(master) self.title("子窗口") # 创建标签对象 label = tk.Label(self, text="这是子窗口") label.pack() # 创建窗口对象 root = tk.Tk() # 创建按钮对象 btn = tk.Button(root, text="弹出子窗口") # 将弹出子窗口函数绑定到按钮事件上 def open_window(): sub_window = SubWindow(root) sub_window.mainloop() btn.config(command=open_window) # 将按钮添加到主窗口上 btn.pack() # 进入消息循环 root.mainloop() ``` 在这个例子中,我们首先定义了一个名为 `SubWindow` 的子窗口类,继承自 `Toplevel`。在这个类的 `__init__` 方法中,我们设置了子窗口的标题,并创建了一个标签对象。接着,我们创建了一个主窗口对象和一个按钮对象,并将弹出子窗口函数 `open_window` 绑定到按钮上。在 `open_window` 函数中,我们创建了一个 `SubWindow` 对象,传入主窗口对象作为参数,并进入子窗口的消息循环。最后,我们将按钮添加到主窗口上,并进入主窗口的消息循环。运行程序后,点击按钮即可弹出子窗口。 这样,我们就学会了如何使用 Python tkinter 弹出子窗口,可以在自己的项目中灵活运用,实现更加多样化的 GUI 界面。 ### 回答3: Python是一种非常流行的编程语言,它广泛应用于各种应用程序的开发中。其中,TkinterPython的标准GUI之一,它提供了丰富而简单的界面设计工具,可以用于快速构建各种桌面应用程序。弹出子窗口Tkinter中常见的操作,下面我将详细介绍如何使用Tkinter弹出子窗口。 首先,我们需要在Python中导入Tkinter,并创建一个主窗口。在这个主窗口中,我们可以添加各种组件,如按钮、标签、文本框等。要弹出子窗口,我们可以使用Tkinter的Toplevel组件。Toplevel组件与主窗口类似,可以包含各种控件,但是它是独立的窗口,可以在主窗口之外弹出。 下面是一个简单的代码示例,演示了如何在按钮被点击时弹出一个子窗口: ```python import tkinter as tk # 创建窗口 root = tk.Tk() # 创建按钮点击事件函数 def open_dialog(): # 创建窗口 dialog = tk.Toplevel() dialog.title('子窗口') dialog.geometry('200x100') # 在子窗口中添加标签 label = tk.Label(dialog, text='这是一个子窗口') label.pack() # 创建按钮 button = tk.Button(root, text='打开子窗口', command=open_dialog) button.pack() # 进入消息循环 root.mainloop() ``` 在这个例子中,我们首先创建了一个主窗口,并在主窗口中添加了一个按钮。当按钮被点击时,将调用open_dialog函数来打开一个子窗口。在open_dialog函数中,我们首先使用Toplevel组件创建一个子窗口,并设置它的标题和大小。然后,在子窗口中添加一个标签。最后,我们通过调用pack方法将这个标签添加到子窗口中。 总的来说,PythonTkinter提供了强大的GUI设计工具,可以用于快速构建各种桌面应用程序。通过使用Toplevel组件,我们可以很方便地在主窗口中弹出子窗口,从而实现更加复杂的交互效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜小昊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值