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