เรากำลังจะสร้างโปรแกรมขนาดเล็กที่มี PyGTK 3.0 ซึ่งใช้งานได้กับ PyGTK 3.4 GUI เล็ก ๆ นี้จะสอนวิธีแบ่งโปรแกรมออกเป็นสองไฟล์หรือมากกว่านั้น
คุณสามารถเยี่ยมชมบทช่วยสอนของ Sebastian Pölsterlเกี่ยวกับ PyGTK 3 ใหม่นี่คือบทช่วยสอนใหม่ฉันทิ้งลิงค์ไว้:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
นี่คือบล็อกของ Sebastian
คำวิจารณ์อย่างหนึ่งของบทช่วยสอนนี้โดยเซบาสเตียนคือมันไม่ได้สอนวิธีแบ่งโปรแกรมออกเป็นส่วน ๆ หรือเป็นหลาย ๆ ไฟล์มันคงจะดีถ้าเขาแสดงตัวอย่างวิธีการทำด้วย PyGTK 3
โปรแกรมที่มีขนาดใหญ่และซับซ้อนทั้งหมดจะถูกแบ่งออกเป็นไฟล์จำนวนมากและไฟล์จะถูกวางไว้ในไดเร็กทอรีอื่นนั่นคือไฟล์เหล่านี้จะอยู่ในโฟลเดอร์ต่างๆ
เริ่มจากตัวอย่างเล็ก ๆ :
นี่คือการเขียนโค้ดในไฟล์เดียวชื่อ gui.py เราเปิดโปรแกรมแก้ไขข้อความ Gedit หรือโปรแกรมแก้ไขที่เราใช้บ่อยที่สุดคัดลอกโค้ดด้านล่างและบันทึกเป็น gui.py
จาก gi.repository import Gtk class gui (): def on_open_clicked (self, button): print "\" Open \ "button was clicked" def on_close_clicked (self, button): print "Closing application" Gtk.main_quit () def __init__ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) self button = Gtk Button (label = 'Open') self.button.connect ("clicked", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtkbutton ( label = 'ปิด') self.button.connect ("clicked", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () ถ้า __name__ == '__main__': gui = กุย ()
def on_open_clicked (self, button): พิมพ์ "\" ปุ่มเปิด \ "ถูกคลิก"
มันเป็นฟังก์ชั่นที่เปิดใช้งานในเทอร์มินัลเมื่อเราคลิกปุ่มเปิด สัญญาณที่จะเปิดใช้งานคือ:
self.button.connect ("clicked", self.on_open_clicked) def on_close_clicked (self, button): พิมพ์ "Closing application" Gtk.main_quit ()
มันเป็นฟังก์ชั่นที่เปิดใช้งานเมื่อเราคลิกที่ปุ่มปิด
ปิดโปรแกรมที่เราเรียกใช้
สัญญาณที่จะเปิดใช้งานคือ
self.button.connect ("clicked", self.on_close_clicked) จาก gi.repository import Gtk ### เราเรียกใช้ไลบรารี PyGTK ### class gui (): ### class definition ที่เรียกว่า gui เป็นคลาสหลัก # ##
การประกาศวิดเจ็ต: วิดเจ็ตเป็นโปรแกรมที่กำหนดไว้ล่วงหน้าโดยไลบรารีอินเทอร์เฟซแบบกราฟิกที่เราใช้ ตัวอย่างเช่นวิดเจ็ตคือปุ่มหน้าต่างกล่อง ฯลฯ นี่คือวิดเจ็ตที่เราประกาศในโปรแกรมของเรา
self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtkbutton (label = 'Open') ### # ปุ่มเปิด #### self.button = Gtk ปุ่ม (label = 'ปิด') #### ปุ่มปิด #### self.window.add (self.box) #### กล่องบรรจุอยู่ใน หน้าต่างที่เรียกว่า window #### self.box.pack_start (self.button, True, True, 0) ##### ปุ่มอยู่ในกล่องที่เรียกว่า box ### self.window.show_all () ## # เราแสดงทั้งหน้าต่าง ### gui = gui () ### สร้างวัตถุ gui ####
เราวางโปรแกรมของเราไว้ในโฟลเดอร์ที่เรียกว่า simple ในกรณีของเราบนเดสก์ท็อป
เราเปิดโฟลเดอร์ด้วยเทอร์มินัลในกรณีของฉันฉันใช้ Nemo จาก Linux Mint 14
ในการคอมไพล์เราใส่ใน terminal python gui.py
ดูภาพ
ตอนนี้เราสามารถเห็นโปรแกรมขนาดเล็กหรือวิดเจ็ตใหม่ของเราที่สร้างขึ้นด้วยไลบรารี PyGTK 3
เป็นหน้าต่างธรรมดาที่มีปุ่มสองปุ่ม
ตอนนี้เราแบ่งโปรแกรมออกเป็นสามส่วนด้านล่างฉันปล่อยรหัสของไฟล์สามไฟล์ไว้
ไฟล์ gui.py แรก
จาก gi.repository import Gtk จาก destroy import destroy จาก io import io class gui (destroy, io): def __init __ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk .main_quit) self.box = Gtk.Box () self.window.add (self.box) self.button = Gtk button (label = 'Open') self.button.connect ("clicked", self.on_open_clicked ) self.box.pack_start (self.button, True, True, 0) self.button = Gtkbutton (label = 'ปิด') self.button.connect ("clicked", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
ไฟล์ io.py ที่สอง
class io: def on_open_clicked (self, button): พิมพ์ "\" ปุ่มเปิด \ "ถูกคลิก"
ไฟล์ที่สาม destroy.py
จาก gi.repository import คลาส Gtk destroy: def on_close_clicked (self, button): print "Closing application" Gtk.main_quit ()
เราวางไฟล์สามไฟล์ไว้ในโฟลเดอร์เดียวกันในกรณีของเราโฟลเดอร์นี้เรียกว่าแบ่งอย่างง่าย
เพื่อรวบรวมไฟล์ทั้งสามไฟล์ เราเปิดโฟลเดอร์ด้วยเทอร์มินัลและใส่กลับเข้าไปในเทอร์มินัล
python gui.py
การแก้ไขโค้ด gui.py
จากคำสั่งทำลายการนำเข้าทำลาย ### เพื่อนำเข้าไฟล์ของเรา destroy.py ### จากคำสั่ง io import io ### เพื่อนำเข้าไฟล์ io.py ### class gui (destroy, io): #### ไปที่ class หลักเราเพิ่มคลาสย่อยทำลายและ io ####
คุณจะเห็นได้ว่าประโยค
def on_open_clicked (self, button): พิมพ์ "\" ปุ่มเปิด \ "ถูกคลิก"
มันไม่ได้อยู่ใน gui.py แต่อยู่ในไฟล์ io.py
ประโยค
def on_close_clicked (ตัวเองปุ่ม):
พิมพ์ "ใบสมัคร"
Gtk.main_quit ()
มันอยู่ในไฟล์ destroy.py
ดังนั้นเราสามารถแบ่งโปรแกรมออกเป็นไฟล์หลาย ๆ ไฟล์ที่อยู่ในไดเร็กทอรีต่างๆในเวลาเดียวกัน
ในทางกลับกัน Python เป็นเสาหลักของซอฟต์แวร์เสรีและได้รับการปรับให้ทำงานกับ GTK 3.6 /3.8 ชื่อ PyGTK การปรับตัวของ Python สำหรับ KDE เรียกว่า PyQT
Python เหมาะสำหรับ Mac OS และ WINDOWS
ฉันหวังว่าการสอนจิ๋ว PyGTK3 นี้จะเป็นประโยชน์กับคุณ พวกเขาสามารถวิพากษ์วิจารณ์เชิงสร้างสรรค์ทั้งหมดที่พวกเขาต้องการ
ฉันยังรู้จัก Gtk 3.4 /3.6 และ Vala GTK 3.4 / 3.6
http://www.youtube.com/watch?v=9ckRn_sx8CE
สุดท้ายนี้ผู้ใช้ KDE ขออภัยที่ไม่ได้ทำการสอนแบบย่อสำหรับ KDE
ใน kde ฉันชอบใช้ kdevelop (ฉันคิดว่านั่นคือสิ่งที่เรียกว่า) เพื่อสร้าง gui อย่างสบายใจ แต่ฉันยังคงมีปัญหาในการหากระบวนการที่จะทำให้มันเกิดขึ้น x thing: '(
เหมาะสำหรับพวกเราที่ใช้ Python: D!
ทักทาย!
สวัสดีฉันติดตามชุมชนนี้มาเป็นเวลานานและฉันไม่แน่ใจมากนักว่านี่เป็นครั้งแรกที่ฉันแสดงความคิดเห็นหรือเคยทำไปแล้วก่อนหน้านี้😀 (ฉันไม่ค่อยให้ความสำคัญกับการเขียนความคิดเห็นบนเว็บจริงๆ) สิ่งนี้คือฉันทำเพื่อให้คำแนะนำแก่ Elav และ KZKG ^ Gaara ในฐานะผู้ดูแลระบบและฉันคิดว่ามันเป็นความคิดที่ดีที่จะเพิ่มปลั๊กอินสำหรับการระบายสีไวยากรณ์ในตอนนี้ซึ่งเมื่อเร็ว ๆ นี้ฉันเห็นโพสต์เพิ่มเติมพร้อมรหัสในภาษาโปรแกรมต่างๆ ฉันรู้ว่ามีปลั๊กอินค่อนข้างน้อย แต่ฉันยังไม่ได้ลองใช้เลยเนื่องจากฉันไม่ใช่ผู้ใช้ wordpress ดังนั้นฉันจึงฝากให้คุณคิดถึงความเป็นไปได้ของคำขอ ฉันใช้โอกาสนี้ถามผู้อ่านที่เหลือว่าพวกเขาคิดอย่างไรกับไอเดียนี้เพราะฉันรู้ว่ามีคนที่ชอบอ่านโค้ดโดยไม่ต้องตกแต่งใด ๆ ขออภัยหากมีการแสดงความคิดเห็นไว้ที่นี่แล้วและถูกปฏิเสธด้วยเหตุผลบางประการเนื่องจากฉันจำไม่ได้ว่าเห็นการสนทนาใด ๆ ในหัวข้อนี้
ความจริงก็คือฉันต้องการมีตัวเลือกในการระบายสีไวยากรณ์เพื่อเน้นรหัสของภาษาโปรแกรม
ซึ่งจะช่วยให้ผู้ใช้ที่ต้องการเรียนรู้ภาษาโปรแกรม
แต่เดี๋ยวก่อนฉันรู้สึกสบายใจกับฟอรัมและเราสามารถพูดคุยและเรียนรู้ร่วมกันได้
GNU Emacs สะดวกสบายกว่าเพราะอย่างน้อยคุณต้องเลือกตัวตรวจสอบภาษาการเขียนโปรแกรมที่คุณต้องการใช้งาน (หากคุณไม่ต้องการน้ำหนักมากขึ้นสำหรับโปรเซสเซอร์ของคุณให้ใช้ GNU Nano และเพลิดเพลินไปกับความเรียบง่ายที่สุด)
Elio เรากำลังพูดถึง WordPress นำไปใช้ในบล็อก Desde Linux- ไม่มีฟังก์ชั่นในการระบายสีตัวอักษรของโพสต์
โอ้ฉันขอโทษ.
Naaa emacs สะดวกสบายสำหรับผู้ที่มี 84 นิ้ว XD .. , คนปกติ, textmate, sublimetext หรือ notepad ++ xd
สิ่งที่ไม่น่าเชื่อคือไม่ได้เรียนรู้การพิมพ์ซึ่งจำเป็นเพื่อให้สามารถจัดการ GNU Emacs และแป้นพิมพ์ลัดได้ดี นอกจากนี้ GUI ยังช่วยให้คุณใช้เมนูได้ง่าย (สามารถใช้ใน Windows ได้ แต่ไม่แนะนำให้ทำในโหมดปกติ แต่ใช้โหมดพรอมต์คำสั่งเพื่อให้ win32 ไม่คว่ำบาตรสคริปต์ของคุณ)
การสอนที่ยอดเยี่ยมมาก แต่อย่างไรก็ตามซอร์สโค้ด python ไม่ได้ถูกคอมไพล์เป็นภาษาที่ตีความได้
สามารถคอมไพล์โค้ดหลอกได้ ไม่ใช่ภาษาเครื่อง แต่เป็นไบต์ที่แสดงถึงสิ่งที่ล่าม แต่กระบวนการนี้เรียกว่าคอมไพล์ด้วย ในแง่นี้อาจกล่าวได้ว่ามีการรวบรวมบางสิ่งบางอย่าง
บางทีอาจจะดีกว่าถ้าเรียนรู้ pytgk2 เพราะเวอร์ชันล่าสุดสำหรับ Windows คือ 2.24 ซีรี่ส์ 3 มีความโดดเด่นเนื่องจากไม่มี และลิ้นที่ไม่ดีบอกว่า gnome ทำลาย apis ทั้งหมดในแต่ละเวอร์ชันใหม่
ฉันตั้งโปรแกรมจำลองด้วย GTK 3.4 / 3.6 และความจริงก็คือพวกเขาทำลายความอดทนและหัวของคุณคุณต้องเขียนโค้ดใหม่ตอนนี้ฉันเข้าใจแล้วว่าทำไมคน Linux Mint บ่นเกี่ยวกับ GTK และโครงการ GNOME
สำหรับผู้ที่ MINT ฉันเห็นด้วยกับ GTK 2.4 สิ่งนี้ไม่ได้เกิดขึ้น
การสอนและการอ้างอิงที่ดี
เพียงแค่รายละเอียดเนื่องจากมีการใส่รหัสแล้วในการเยื้อง Python จึงเป็นสิ่งที่จำเป็นและควรได้รับการเคารพในโค้ดตัวอย่าง
ทักทาย!
คุณช่วยอธิบายได้ไหมว่าการระบุที่จำเป็นใน Python ประกอบด้วยอะไรเพื่อบอกความจริงกับคุณฉันไม่เคยได้ยินมาก่อนฉันคุ้นเคยกับฟอรัม PyGTK 2/3 ในภาษาอังกฤษเป็นอย่างดีและบางทีฉันอาจมองข้ามไป
ใน Python คุณไม่ได้ใช้คีย์ใน C หรือเริ่มต้น / สิ้นสุดบล็อกเหมือนใน Pascal แต่ทุกอย่างเข้าใจผ่านการเยื้องที่คุณให้รหัส นั่นคือบล็อกได้รับการยอมรับว่าอยู่เยื้อง เป็นคุณสมบัติที่ฉันชอบเป็นพิเศษ คุณหลีกเลี่ยงการเขียนคีย์และสิ่งต่างๆเช่นนั้น
ฉันไม่ชอบมันดูเหมือนง่ายกว่าที่จะใส่คีย์เล็ก ๆ สองอันหรือ std :: endl; มากกว่าที่จะเห็นว่าเส้น xd เป็นตารางที่ดี
: p ครูเขียนโปรแกรมของคุณจะใส่ 0 ให้คุณ หรือแย่กว่านั้นพวกเขาจะไล่คุณออกจากงาน สิ่งที่สำคัญที่สุดคือรหัสสามารถอ่านได้โดยมีนัยทั้งหมด
ลงท้ายด้วยวงเล็บปีกกาทำให้ฉันอ่าน XD ได้มากขึ้น ..
อย่างจริงจัง???
int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}
เห็นมั้ย? หากไม่มีการเยื้องจะไม่เป็นที่เข้าใจกันดีนัก และนั่นเป็นเรื่องง่าย มีเพียงคอมไพเลอร์เท่านั้นที่เข้าใจ สิ่งนี้ก็คือเนื่องจากคุณต้องเยื้องอยู่แล้ว (เพื่อให้มนุษย์เข้าใจรหัส) เหตุใดจึงซ้ำซ้อนและใช้ตัวคั่น เพียงพอกับการเยื้องและนั่นแหล่ะ
แน่นอนว่าไม่มีอะไรเข้าใจได้เพราะคุณไม่เคารพกฎการเขียนโปรแกรมที่ดีใน c / c ++ สิ่งที่คุณทำนั้นใช้ได้กับทุกสิ่งเช่นการซ้อนฟังก์ชันภายในฟังก์ชันภายในฟังก์ชันอื่นที่อยู่ภายในฟังก์ชันอื่นฉันต้องการเห็นคุณ xd หากคุณสามารถเข้าใจได้
อย่างไรก็ตามด้วยสองรูปลักษณ์รหัสนั้นเป็น xD ที่เข้าใจได้ง่าย
สิ่งที่ฉันทำโดยมีจุดประสงค์เพื่อแสดงให้คุณเห็นว่าหากไม่มีการเยื้องแม้ว่าจะรวบรวม แต่ก็ยากที่จะเข้าใจรหัสใด ๆ ดังนั้นคุณจึงมีกฎ 2 ข้อ: เยื้องและล้อมรอบด้วยตัวคั่น แต่ที่ซ้ำซ้อน ใน Python รหัสดังกล่าวไม่ได้รับการยอมรับจากล่าม และคุณมีกฎเพียงข้อเดียว: เยื้อง ง่าย.
แต่เดี๋ยวก่อนทุกคนมีรสนิยม
ทั้งสองอย่างดีการเยื้องและไม่เยื้องในความคิดของฉันฉันชอบรูปแบบอัฒภาคหรือทับทิมคล้ายกับหลาม แต่ไม่จำเป็นต้องเยื้อง
อย่างนี้เข้าใจดีกว่า: P:
echo 'int main (int argc, char * argv []) {program_name = argv [0]; ในขณะที่ ((argc> 1) && (argv [1] [0] ==' - ')) {สวิตช์ (argv [ 1] [1]) {case 'v': verbose = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; default: fprintf (stderr, »ตัวเลือกไม่ถูกต้อง % s \ n », argv [1]); การใช้งาน ();} ++ argv; –argc;} if (argc == 1) {do_file ("print.in");} else {while (argc> 1 ) {do_file (argv [1]); ++ argv; –argc;}} return (0);} '| เพิร์ล -p -e 's / \ {/ \ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g;'
ทักทาย😀
ฉันคิดว่าคาร์ลอสหมายความว่าที่ที่รหัสออกมาไม่มีการเยื้อง ด้วยการคัดลอกและวางจะใช้ไม่ได้ ฉันไม่ทราบว่ามีแท็กอยู่หรือไม่เมื่อสร้างโพสต์
เพื่อป้อนรหัสภาษา มันจะดีถ้าพวกเขาวางไว้ถ้ามันไม่มี
ฉันเห็นแล้วว่าปัญหาคืออะไร: แท็ก CODE จะลบช่องว่างและแท็บทั้งหมด (ไม่ควรทำอย่างนั้น !!!) แต่ถ้าคุณใส่ N ลงไปแล้วโค้ดก็ดูดี A0 ในฐานสิบหก (160 ในธันวาคม) แม้ว่าฉันคิดว่ามันอาจขึ้นอยู่กับฟอนต์ (ฉันไม่รู้) ถ้าใช้แล้วจะออกมาเป็นดังนี้:
def fib(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
ในการทดสอบของฉันมันดูดี แต่ฉันไม่มีตัวอย่างเมื่อฉันโพสต์คำตอบ (และควรจะมีด้วย !!!) ถ้ามันไม่ออกมามันไม่ใช่ความผิดของฉัน😉
ดูตัวอย่างที่ Sebastian Pölsterlใส่ไว้ในบทช่วยสอน PyGTK 3 ของเขาเซบาสเตียนไม่ได้ติดป้ายกำกับ
ตัวอย่าง:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example
คุณสามารถดูบทแนะนำทั้งหมดของเซบาสเตียน
ฉันไม่ทราบว่าสิ่งที่คุณหมายถึง. สิ่งที่ฉันพูดคือที่นี่ในโพสต์ไม่สามารถใช้แท็ก HTML « CODE »เพื่อให้สิ่งที่คุณใส่เป็นโค้ดและมันออกมาเยื้องได้ดี ในหน้าที่คุณอ้างถึงหากคุณเห็นแหล่งที่มาของหน้าคุณจะเห็นว่าไม่ได้ใช้ CODE แต่ใช้ตัวคั่น HTML อื่น ๆ
ไม่ได้ขัดต่อรหัสที่คุณใส่ แต่เป็นการชี้ให้เห็นข้อบกพร่องในระบบการโพสต์ของไซต์นี้ ซึ่งบางทีผู้ดูแลระบบสามารถแก้ไขได้
เมื่อฉันพูดถึงแท็กฉันพูดถึง HTML ไม่ใช่ Python ไม่ว่าในกรณีใดหากคุณใส่โค้ดโดยไม่มีการเยื้องใน Python ก็จะไม่ทำงาน หากมือใหม่เข้ามาและคัดลอกรหัสตามที่ปรากฏในโพสต์นี้และพยายามเรียกใช้งานเขาจะล้มเหลว คุณอาจจะหงุดหงิดเพราะคุณเป็นมือใหม่ อีกครั้งความผิดไม่ใช่ของคุณ และในคำตอบก่อนหน้านี้ของฉันสิ่งที่ฉันทำคือให้วิธีการแก้ปัญหาตั้งแต่ระดับผู้ใช้ที่โพสต์
คุณพูดถูกจริงๆฉันควรอัปโหลดรูปภาพแทนการคัดลอกโค้ด
เพื่อแสดงว่าข้อความสั่งถูกต้องใน PyGTK 3 อย่างไร
ในการเขียนโปรแกรมด้วย python ขอแนะนำให้ใช้ Eclipse กับปลั๊กอิน PyDev หรือ Pychar m
ดังที่ได้กล่าวไว้ข้างต้นนั่นเป็นเหตุผลที่ฉันไม่ชอบ python เนื่องจากการเยื้อง อย่างที่เราเห็นการคัดลอกและวางจะไม่ทำงานซึ่งจะไม่เกิดขึ้นกับภาษาอื่น ๆ เช่น C, Java, PHP เป็นต้น
สิ่งที่สามารถอ่านได้เราใช้ตัวตกแต่งรหัส (เช่น http://indentcode.net/ ) และพร้อม
สิ่งที่น่าเกลียดได้รับการแก้ไข แต่ถ้าไม่มีการเยื้องและตรรกะมีการเปลี่ยนแปลงเราจะฟัง ..
ฉันยังใหม่กับ PyGTK เป็นไปได้ไหมที่จะโต้ตอบกับเชลล์สคริปต์ในภาษานี้
ขอบคุณสำหรับบทแนะนำ
อาศิรพจน์