Tkinter windows 在 i3 中浮动但也在 MS-Windows 中工作
Tkinter windows floating in i3 but also working in MS-Windows
我正在 Python 使用 Tkinter 创建我的第一个 GUI 应用程序。非常简单的脚本,用于根据用户输入从 python 属性库中获取一些值。所以没什么太复杂的
问题是我正在 Linux 使用 i3 进行开发。所以我设置了 windows.attributes('type', 'dialog')
并且效果很好。但是,在MSWindows中,那一行报错,必须注释掉。
在 i3 中评论过,它仍然有效,但 window 是耕种的,而不是浮动的。
有没有办法让它在 i3 中浮动并在 MS-Windows 中工作?我可能会添加到 .config/i3/config
以使其浮动并在 MS-Windows?
上工作的任何 window 属性
谢谢
MWE
import tkinter as tk
import numpy as np
window = tk.Tk()
window.title('pytiplier')
window.attributes(
#THIS GIVES ERROR IN WINDOWS
'-type', 'dialog',
)
frm_data = tk.Frame(relief=tk.GROOVE,
borderwidth=2,
)
frm_data.pack()
lbl_number = tk.Label(master=frm_data,
text='Enter a number:',
)
ent_number = tk.Entry(master=frm_data,
width=5,
)
lbl_number.grid(row=0,column=0,sticky='e')
ent_number.grid(row=0,column=1)
frm_compute = tk.Frame()
btn_compute = tk.Button(master=frm_compute,
text="Compute!",
width=15,
height=2,
)
def compute_click(event):
number = float(ent_number.get())
result = np.pi*number
lbl_result['text'] = f'\N{GREEK SMALL LETTER PI}*{number} is {round(result, 4)}'
lbl_result = tk.Label(master=frm_compute,
width=40,
text='Enter a number and press Compute!'
)
lbl_result.pack()
btn_compute.bind("<Button-1>", compute_click)
btn_compute.pack()
frm_compute.pack()
window.mainloop()
有没有办法让它在 i3 中浮动并在 MS-Windows 中工作?
如果您需要基于主机 OS 的不同行为,您可以使用 platform
内置模块中的 platform.system
,考虑简单的示例:
import platform
host = platform.system()
if host == "Linux":
print("Running on Linux")
elif host == "Windows":
print("Running on Windows")
else:
print("Running on something else")
我正在 Python 使用 Tkinter 创建我的第一个 GUI 应用程序。非常简单的脚本,用于根据用户输入从 python 属性库中获取一些值。所以没什么太复杂的
问题是我正在 Linux 使用 i3 进行开发。所以我设置了 windows.attributes('type', 'dialog')
并且效果很好。但是,在MSWindows中,那一行报错,必须注释掉。
在 i3 中评论过,它仍然有效,但 window 是耕种的,而不是浮动的。
有没有办法让它在 i3 中浮动并在 MS-Windows 中工作?我可能会添加到 .config/i3/config
以使其浮动并在 MS-Windows?
谢谢
MWE
import tkinter as tk
import numpy as np
window = tk.Tk()
window.title('pytiplier')
window.attributes(
#THIS GIVES ERROR IN WINDOWS
'-type', 'dialog',
)
frm_data = tk.Frame(relief=tk.GROOVE,
borderwidth=2,
)
frm_data.pack()
lbl_number = tk.Label(master=frm_data,
text='Enter a number:',
)
ent_number = tk.Entry(master=frm_data,
width=5,
)
lbl_number.grid(row=0,column=0,sticky='e')
ent_number.grid(row=0,column=1)
frm_compute = tk.Frame()
btn_compute = tk.Button(master=frm_compute,
text="Compute!",
width=15,
height=2,
)
def compute_click(event):
number = float(ent_number.get())
result = np.pi*number
lbl_result['text'] = f'\N{GREEK SMALL LETTER PI}*{number} is {round(result, 4)}'
lbl_result = tk.Label(master=frm_compute,
width=40,
text='Enter a number and press Compute!'
)
lbl_result.pack()
btn_compute.bind("<Button-1>", compute_click)
btn_compute.pack()
frm_compute.pack()
window.mainloop()
有没有办法让它在 i3 中浮动并在 MS-Windows 中工作?
如果您需要基于主机 OS 的不同行为,您可以使用 platform
内置模块中的 platform.system
,考虑简单的示例:
import platform
host = platform.system()
if host == "Linux":
print("Running on Linux")
elif host == "Windows":
print("Running on Windows")
else:
print("Running on something else")