奇怪的行为tkinter.tk.Sizegrip公司

2024-09-24 02:14:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试在Python3中学习tkinter,所以我不确定我是在看一个bug还是我做得不正确。在

from tkinter import *
from tkinter import ttk

root = Tk()
grip = ttk.Sizegrip(root).grid(column=0, row=0, sticky=(S,E))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
root.mainloop()

当Sizegrip被抓取时,整个窗口会快速移动(比鼠标指针移动的速度快)到屏幕底部。窗口大小正在适当调整,但整个窗口的移动不是我所期望的。[我在使用Ubuntu10.04和Python3.1.2]


Tags: fromimporttkintercolumnrootbugpython3tk
1条回答
网友
1楼 · 发布于 2024-09-24 02:14:29

我的系统(Ubuntu10.10,Python2.6)也有同样的问题,我认为这与窗口管理器有关,而不是Tkinter。当我使用Openbox时,我没有问题,当我使用root.overrideDirect(1) ,我也没有问题。在

你能做的就是ttk.标签主题是看起来像一个sizegrip。将其绑定到并相应地调整窗口大小。这是一扇窗户,窗户的大小是这样做的:

from tkinter import *
from tkinter import ttk

#
# Callbacks:
#
# Change "bottom_right_corner" to "size_nw_se" and
# "arrow" to "left_ptr" if running on Windows.
#

def button_press(event):
    sizegrip["cursor"] = "bottom_right_corner"

def resize(event):
    deltax = event.x_root - root.winfo_rootx()
    deltay = event.y_root - root.winfo_rooty()
    if deltax < 1:
        deltax = 1
    if deltay < 1:
        deltay = 1
    root.geometry("%sx%s" % (deltax, deltay))

def button_release(event):
    sizegrip["cursor"] = "arrow"

# Widget Creation
root = Tk()                    
sizegrip = ttk.Label(root, style="Sizer.TLabel")

# Styling
style = ttk.Style()
style.layout("Sizer.TLabel", [("Sizegrip.sizegrip",
                               {"side": "bottom", "sticky": "se"})])

# Geometry Management
sizegrip.pack(side="bottom", anchor="se")

# Bindings
sizegrip.bind("<ButtonPress-1>", button_press)
sizegrip.bind("<B1-Motion>", resize)
sizegrip.bind("<ButtonRelease-1>", button_release)

root.mainloop()

我已经习惯了Python2,如果我在语法上弄错了一点,很抱歉。我用python2imports(“from Tkinter import*”和“import ttk”)对它进行了测试,它可以工作。我们只希望导入在python3中是完全不同的。在

相关问题 更多 >