首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在unity面板或alt-tab中运行python tkinter应用程序

如何在unity面板或alt-tab中运行python tkinter应用程序
EN

Stack Overflow用户
提问于 2015-07-05 17:37:43
回答 3查看 466关注 0票数 4

我正在使用Python和tkinter为Ubuntu开发一个倒计时器。

我已经创建了大部分部件,现在我希望我的应用程序能够运行,而不会出现在Unity面板或Alt-Tab切换序列中。有没有办法做到这一点?

我还想知道是否有可能创建一个没有标题栏的可移动窗口。我试过root.overrideredirect(1)了。

但是有了它我就不能移动窗户了。

这是我的程序的代码。

代码语言:javascript
复制
#!/usr/bin/python3

import tkinter as tk
from tkinter import ttk
from tkinter import TOP,LEFT
import time
import datetime
import sys





class Countdown(ttk.Frame):

    def __init__(self,parent=None, endDate=None):
        ttk.Frame.__init__(self,parent)
        self.style = ttk.Style()
        self.style.theme_use("clam")
        self.pack()
        endDate = endDate.split("/")
        self.endTime = datetime.datetime(int(endDate[2]),int(endDate[1]),int(endDate[0]))
        self.setWidgets()
        self.initWidgets()


    def setWidgets(self):
        self.dLbl = ttk.Label(self,text="0",font="Ubuntu 14 bold")
        self.dLbl.pack(padx=10,pady=10,side=LEFT)
        self.hLbl = ttk.Label(self,text="0",font="Ubuntu 14 bold")
        self.hLbl.pack(padx=10,pady=10,side=LEFT)
        self.mLbl = ttk.Label(self,text="0",font="Ubuntu 14 bold")
        self.mLbl.pack(padx=10,pady=10,side=LEFT)

    def getTimeDelta(self):
        self.curDate = datetime.datetime.now()
        self.diff = self.endTime - self.curDate

        self.tSec = self.diff.total_seconds()
        self.days = self.diff.days
        h = int(((self.tSec) - self.days*24*60*60)/3600)
        self.hours = h if h>0 else 0
        m = int(((self.tSec) - (self.hours*60*60+self.days*24*60*60))/60)
        self.minutes = m if m>0 else 0
        self.sec = int(self.tSec - self.minutes*60)
        return [self.days,self.hours,self.minutes+1]

    def initWidgets(self):
        def set():
            dhm = self.getTimeDelta()
            self.dLbl["text"]=str(dhm[0])+" Days"
            self.hLbl["text"]=str(dhm[1])+" Hours"
            self.mLbl["text"]=str(dhm[2])+" Mins"
            self.after(1000,set)
        set()

root = tk.Tk()
root.title(sys.argv[1])
app = Countdown(root, sys.argv[2])
app.mainloop()
EN

Stack Overflow用户

发布于 2019-05-28 09:45:23

创建您自己的titlebar,如下所示:

代码语言:javascript
复制
import sys
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk() #create the window
titlebar = tk.Label(root,height=2, bg='cyan', fg='navyblue', text=sys.argv[0]) #create the titlebar
resizable = ttk.Sizegrip(root) #make the window resizable
titlebar.pack(fill='both') # display the titlebar
root.overrideredirect(1) #make the window run without appearing in alt tab
#root.withdraw() 
#root.deiconify()
root.geometry('200x200') #set the window size to 200x200
resizable.pack(fill='y',side='right')
def ontitlebarclicked(event):
    global lastposition
    lastposition=[event.x,event.y] 

def ontitlebardragged(event):
    global lastposition
    windowposition=[int(i) for i in root.geometry().split('+')[1:]] # get the window position
    diffposition=[event.x-lastposition[0],event.y-lastposition[1]]
    widthheight=root.geometry().split('+')[0]
    root.geometry(widthheight+'+'+str(windowposition[0]+diffposition[0])+'+'+str(windowposition[1]+diffposition[1]))

titlebar.bind('<Button-1>',ontitlebarclicked)
titlebar.bind('<Button1-Motion>',ontitlebardragged)
titlebar.focus_force()
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31228997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档