在another post Brian Oakley提供了一些代码,99%解决了我遇到的问题。当我去运行代码时,只有一个小例外,一切都运行得更好。该图不在正确的y位置。我正在尝试的任何东西都不起作用。我被难倒了。最后,今天早上我偶然发现了问题的答案,我不确定这是否是一个问题,很可能与Frame或者交易有关。如果他们是另一个解决问题的办法,而不是首先在屏幕上放置一个虚拟点,我就会徘徊。Python tkinter第一行没有绘制正确的y位置
在下面的代码中,如果您删除def graph_data(self):
的第一行中的#,一切正常。如果您有#入口,并且最初不在屏幕上绘制虚拟点,则线条将不会显示在屏幕上的正确位置。这是他们处理这个问题的另一种方式,因为它似乎总是在发生。我在Linux上运行这个,所以甚至可能成为问题的一部分......谁知道。奇怪的是,当我在我的程序中,我首先打印了标尺,但它总是正确放置,但是当我去绘制数据时,屏幕上的水平线不会在正确的位置打印,除非我先添加虚拟点。
import tkinter as tk
class Example(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.DrawArea = tk.Canvas(self, width=1300, height=600, background="black",
borderwidth=0, highlightthickness=0)
self.scale = tk.Canvas(self, width=30, height=600, background="black",
borderwidth=0, highlightthickness=0)
self.hsb = tk.Scrollbar(self, orient="horizontal", command=self.DrawArea.xview)
self.vsb = tk.Scrollbar(self, orient="vertical", command=self.DrawArea.yview)
self.DrawArea.configure(yscrollcommand=self.vsb.set, xscrollcommand=self.hsb.set)
self.DrawArea.grid(row=0, column=0, sticky="nsew")
self.scale.grid(row=0, column=1, sticky="nsew")
self.vsb.grid(row=0, column=2, sticky="ns")
self.hsb.grid(row=1, column=0, columnspan=2,sticky="ew")
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(0, weight=1)
self.graph_data()
def graph_data(self):
#self.DrawArea.create_line((0,0), (0,0), fill = "black")
self.DrawArea.create_line((0,250), (1000,250), fill = "white")
self.DrawArea.create_line((0,300), (2000,300), fill = "white")
self.DrawArea.configure(scrollregion = self.DrawArea.bbox("all"))
root = tk.Tk()
Example(root).pack(fill="both", expand=True)