【发布时间】:2017-09-02 05:05:55
【问题描述】:
我编写了一个简单的 Python 应用程序来测量某个事件的时间。一切正常,但在两个不同的操作系统上看起来完全不同的事实让我有点头疼。我可以做些什么吗?为什么会这样?我的意思是,最后,代码是一样的。
# str8.py
# Program to measure time from a certain event
from tkinter import *
from datetime import datetime
class FormatLabel(Label):
# A new type of Label widget that allows both text and textvariable
def __init__(self, master = None, **kwargs):
self.textvariable = kwargs.pop('textvariable', StringVar(master))
self.text = kwargs.pop('text', '{}')
self.textvariable.trace('w', self.update_text)
Label.__init__(self, master, **kwargs)
def update_text(self, *args):
self.config(text = self.text.format(self.textvariable.get()))
class App(Frame):
def __init__(self, master = None, **kwargs):
Frame.__init__(self, master, **kwargs)
lbl = Label(self, text = 'You have been STR8 for:\n', font = 'Verdana 8 bold')
lbl.grid(row=0, sticky=W)
self.counters = dict()
measurements = [ 'Years', 'Weeks', 'Days', 'Hours', 'Minutes', 'Seconds' ]
for i, measurement in enumerate(measurements):
self.counters[measurement] = DoubleVar()
lbl = FormatLabel(self,
text = measurement + ": {:.2f}", # set the rounding here
textvariable = self.counters[measurement],
font = 'Verdana 8')
lbl.grid(row = i + 1, column = 0, sticky = W)
self.counters[measurement].set(0)
btn = Button(self,
text = 'EXIT',
font = 'Verdana 8',
height = 1,
width = 19,
command = quit)
btn.grid(row = 7, column = 0)
self.increment()
def increment(self):
event = datetime(2017, 4, 4, 0, 0, 0)
today = datetime.now()
str8 = (today - event).total_seconds()
self.counters['Minutes'].set(str8 / 60.)
self.counters['Hours'].set(str8 / 3600.)
self.counters['Seconds'].set(str8)
self.counters['Days'].set(str8 / (3600. * 24))
self.counters['Weeks'].set(str8 / (3600. * 24 * 7))
self.counters['Years'].set(str8 / (3600. * 24 * 7 * 52))
self.after(1000, self.increment)
def main():
root = Tk()
app = App(root)
app.pack()
root.title("STR8")
root.resizable(width = False, height = False)
app.mainloop()
if __name__ == '__main__':
main()
图片:
【问题讨论】:
-
Tkinter(和一般的 tk)使用操作系统窗口管理器的原生 GUI 构建块。我怀疑你能做些什么。
-
它们看起来不同的原因与 Windows 和 Linux 通常看起来不同的原因相同。别担心。
-
@zondo 您实际上应该担心它,因为一个操作系统中的某些参数可能不会像在其他操作系统中那样(根本)生效。
-
是的,我很担心,因为 Windows 中没有显示标题,而且按钮也被扭曲了。
-
完全不同?他们在我看来几乎不同。相同的按钮,相同的文字,相同的组织,或多或少相同的大小......
标签: python linux windows tkinter