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