我有一个窗口,周围有一个坚固的边框.如何使用SetWindowLong和GetWindowLong删除边框(所有非客户区域)?
我目前正在使用Linux上的Tkinter和Python 2.7,我想知道是否有办法在TK()不使用的情况下删除窗口边框和标题栏overrideredirect(1).
我有自己的关闭按钮,overrideredirect(1)并向我提出了一些我不能接受的问题:
我无法使用attributes("-fullscreen", True)标题栏和边框保留.
我之所以发布此消息,是因为我自己一直在努力寻找有关此问题的明确答案。。。
为了尝试为我的程序创建进度条,我发现使用tkinter很难做到。为了完成创建进度条而没有遇到可怕的“ mainloop”,我选择使用threads从进度条中制作一个类。经过大量的试验,发现一个错误,由于使用多线程(tkinter喜欢在主线程中),因此无法自定义很多内容。这是我尝试过的两个选项,其次是最适合我的需求的第三个选项:
给出以下代码:
import tkinter as tk
import tkinter.ttk as ttk
import threading
class ProgressbarApp(threading.Thread):
def __init__(self, max_value: int):
self.max_value = max_value
self.root = None
self.pb = None
threading.Thread.__init__(self)
self.lock = threading.Lock() # (1)
self.lock.acquire() # (2)
self.start()
# (1) Makes sure progressbar is fully loaded before executing anything
with self.lock:
return
def close(self):
self.root.quit()
def run(self):
self.root = tk.Tk()
self.root.protocol("WM_DELETE_WINDOW", self.__callback)
self.pb = ttk.Progressbar(self.root, orient='horizontal', length=400, mode='determinate')
self.pb['value'] = 0
self.pb['maximum'] = self.max_value
self.pb.pack()
self.lock.release() …Run Code Online (Sandbox Code Playgroud) 我希望我的程序出现在任务栏中,但仍然没有传统的Windows寄存器.我怎么能这样做?我知道self.overrideredirect(1),但这会从任务栏中删除我的程序.
这适用于Windows 7.
python ×3
tkinter ×3
exit ×1
progress-bar ×1
python-2.7 ×1
python-3.x ×1
winapi ×1
windows-7 ×1